在 RocketMQ 中,Producer(生产者)是负责将消息发送到 Broker 的角色。无论是电商订单消息、支付消息,还是各种异步解耦场景,Producer 都通过将数据封装成消息,投递到指定的 Topic,实现消息的传输与分发。以下内容将帮助你快速理解 RocketMQ Producer 的工作机制、常见的发送模式以及最佳实践。
1. Producer 的核心概念
-
Topic
- Producer 需要向某个 Topic 发送消息。Topic 是消息的逻辑分组,对应 Broker 上的一组存储队列 (Queue)。
-
Group(Producer Group)
- Producer Group 主要用于事务消息场景或者运维管理。普通的发送消息场景下,设置一个合适的分组名称即可。
- 不同 Producer Group 的 Producer 互相独立,不会共享发送状态。
-
NameServer 路由
- Producer 在发送消息前,需要从 NameServer 获取 Topic 对应的 Broker 列表及队列分布,以便决定将消息发往哪一台 Broker、哪一个 Queue。
- 如果出现路由变更(如 Broker 新增或下线),Producer 会定时重新拉取最新信息。
-
消息可靠性
- RocketMQ 默认保证“至少一次”投递。若网络抖动、Broker 超时等,Producer 会重试发送,可能会导致重复消息。
- 业务端需实现幂等消费或判重处理,以避免重复消费对业务造成影响。
2. Producer 的常见发送模式
2.1 同步发送 (Sync)
- 用法:
producer.send(msg); - 特点:Producer 发送消息后会阻塞,直到 Broker 返回发送结果。
- 优点:能够明确知道消息是否发送成功,适合对可靠性要求较高或需要拿到发送结果做后续处理的场景。
- 示例:
DefaultMQProducer producer = new DefaultMQProducer("sync_producer_group");
producer.setNamesrvAddr("127.0.0.1:9876");
producer.start();
try {
for (int i = 0; i < 5; i++) {
Message msg = new Message("TestTopic", "TagA", ("Hello RocketMQ "

最低0.47元/天 解锁文章
758

被折叠的 条评论
为什么被折叠?



