# RocketMQ

# 如何在一个进程中配置多个producer

实际应用中的生产端对于MQ有多种多样的需求, 这次我碰上了需要为一个生产端应用配置多个producer实例的需求, 下面我先说结论和方案, 再来带大家了解一下需求场景.

# 结论: 同一个进程可以配置多个producer实例

同一个进程中只能有一个producer group, 同一个组下可以有多个producer实例.

# 实现方法

在构造producer实例时, 需要对不同producer设置不同的instanceName, 在应用启动时便不会抛异常了.

DefaultMQProducer defaultMQProducer = new DefaultMQProducer(groupName);
defaultMQProducer.setNamesrvAddr(namesrvAddr);
defaultMQProducer.setVipChannelEnabled(false);
defaultMQProducer.setRetryTimesWhenSendFailed(3);
defaultMQProducer.setInstanceName("producer2");
defaultMQProducer.start();

# 为什么需要配置多个producer实例?

在构造producer时, 有许多配置可以进行设置, 例如: setRetryTimesWhenSendFailed()、setSendMsgTimeout()、setRetryTimesWhenSendFailed()等, 有可能会针对具体的业务进行不一样的设置, 因此在同一应用中, 不同业务使用的producer可能不一样, 便需要配置多个producer.

修改于: 8/11/2022, 3:17:56 PM