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

  • 相关阅读:
    Yii的上传类使用CUploadedFile
    后台无刷新修改字段js
    YII CGridView的分析
    YII开发技巧分享——模型(models)中rules自定义验证规则
    easy_ui之窗口弹出的实例
    php后台如何避免用户直接进入方法
    暑假周总结三
    暑假周总结二
    暑假周总结一
    从入门到精通6
  • 原文地址:https://www.cnblogs.com/Jtianlin/p/8653034.html
Copyright © 2020-2023  润新知