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

  • 相关阅读:
    samba 服务搭建
    lock
    dev GridControl FilterCriteria
    dev GridControl Column 背景色
    Microsoft NLayerApp案例理论与实践
    DDD
    .Net架构师-开闭原则
    .Net架构师-面向对象的设计原则
    .Net架构师-详解面向对象
    .Net架构师-面向过程和面向对象
  • 原文地址:https://www.cnblogs.com/Jtianlin/p/8653034.html
Copyright © 2020-2023  润新知