码迷,mamicode.com
首页 > 其他好文 > 详细

RocketMQ最佳实战

时间:2018-03-26 19:47:33      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:状态机   tags   注意   避免   发送   修改   字段   ons   air   

RocketMQ 客户端最佳实践
1.Producer最佳实践
发送消息注意事项
1).一个应用尽可能用一个Topic,消息子类型用tags来标识,tags可以由应用自由设置。
2).消息发送成功或者失败,要打印消息日志,务必要打印sendresult和key字段。
SEND_OK,消息发送成功。
3).对于消息不可丢失应用,务必要有消息重发机制,例如如果消息发送失败,存储到数据库,能有定时程序尝试重发,或者人工触发重发。
2.消息发送失败如何处理:
1).重试
2).如果调用send同步方法发送失败,则尝试将消息存储到db,由后台线程定时重试,保证消息一定到达Broker。
3.Consumer 最佳实践
1).消费过程要做到幂等
RocketMQ目前无法避免消息重复,所以如果业务对消费重复非常敏感,务必要在业务层面去重,有以下几种去重方式:
a).将消息的唯一键,可以是msgId,也可以是消息内容中的唯一标识字段,例如订单Id等,消费之前判断是否在Db或Tair(全局KV存储)中存在,如果不存在则插入,并消费,否则跳过。
b).用业务层面的状态机去重。
2).提高消费并行度
a).同一个ConsumerGroup下,通过增加Consumer实例数量来提高并行度,超过订阅队列数的Consumer实例无效。可以通过加机器,或者在已有机器启动多个进程的方式。
b).提高单个Consumer的消费并行线程,通过修改以下参数: consumeThreadMin consumeThreadMax
3).消息批量消费
4).跳过非重要消息
5).优化每条消息消费过程

RocketMQ最佳实战

标签:状态机   tags   注意   避免   发送   修改   字段   ons   air   

原文地址:https://www.cnblogs.com/Jtianlin/p/8653034.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!