RocketMQ 生产者启动流程
一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第7天,点击查看活动详情
生产者是消息的发送方,生产者将消息投递到 Broker 中即返回, 生产者代码:
public class ProducerDemo {
public static void main(String[] args) throws Exception {
//1 创建生产者,并指定producerGroup
DefaultMQProducer producer = new DefaultMQProducer("MY_PRODUCER_GROUP");
producer.setNamesrvAddr("10.227.12.225:9876");//多个地址可以使用";"进行分割
//2 启动
producer.start();
//3 构建消息
String messageBoddy = "this is message body";
String topic = "FailOverTest";
Message msg = new Message(topic, messageBoddy.getBytes());
//4 发送消息
SendResult result = producer.send(msg);
//5 打印消息发送结果
System.out.println(result);
//6 停止
producer.shutdown();
}
}
可以看到,一个生产者启动流程一般包含如下步骤:
- 创建生产者,并指定producerGroup
- 启动生产者
- 构建消息
- 发送消息
- 记录消息发送结果
- 结束
生产者创建
DefaultMQProducer是RocketMQ 中生产者的默认实现,在创建一个生产者时,需要指定生产者所属的生产者组(producer group)。
生产者启动
调用DefaultMQProducer类的start方法进行启动。start 方法包含进行以下步骤:
- 检查生产者名字是否合法
- 生产者组名称不能为null或者空串
- 长度不能超过255个字符
- 需要满足正则表达式:`^[%|a-zA-Z0-9_-]+$``,即只能由数字、字母、下划线、中划线和%组成,
- 不能是
RocketMQ保留的生产者组名称"DEFAULT_PRODUCER"。
-
修改
instanceName的进程Id -
创建
MQClientInstance
生产者和消费者中,通一个JVM ,应该是一个MQClientInstance
4. 生产者注册 mQClientFactory