深入理解 RocketMQ 生产者
特别说明
当前文章内容迁移中,如有问题,请提交 issues 谢谢 ~~
生产者消息发送的方式
- 同步(默认发送方式,超时 3s)
RocketMQ 发送消息后,当前线程阻塞,直到消费者返回消息。
- 异步
RocketMQ 发送消息后,会注册一个回调函数,消费者返回消费状态后,会启用新的线程处理。
- 单向
RocketMQ 发送消息后,当前线程结束。不用关注消费者对消息的处理状态。
生产者可以发送的消息类型
- 事务消息
- 延迟消息
- 顺序消息
消息发送的基本流程
- 验证消息
- 查找路由
- 消息发送(包含异常处理机制)
消息长度验证
批量消息发送
将同一主题的多条消息一起打包发送到消息服务端。
消息队列负载机制
生产者在发送消息前,如果本地路由表中不存在对应的 topic 路由信息,就会向 NameServer 发送一次请求,更新本地路由表信息。同时,
本地路由表每 30s 更新一次路由表信息。
消息发送异常机制
消息发送的两个高可用手段
- 重试
- broker 规避:如果每次消息发送时,对应的 broker 产生了错误,那么在某一段时间内,当前 broker 的消息队列就不会在被使用。