RocketMQ最佳实战


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). 优化每条消息消费过程

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM