zoukankan      html  css  js  c++  java
  • 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). 优化每条消息消费过程

  • 相关阅读:
    akka设计模式系列-actor锚定
    Akka源码分析-Remote-位置透明
    Akka源码分析-Remote-网络链接生命周期
    Akka源码分析-Remote-收消息
    Akka源码分析-Remote-网络链接
    Akka源码分析-Remote-发消息
    Akka源码分析-Remote-Actor创建
    Akka源码分析-Remote-ActorSystem
    Akka源码分析-ask模式
    Akka源码分析-深入ActorRef&ActorPath
  • 原文地址:https://www.cnblogs.com/Jtianlin/p/8653034.html
Copyright © 2011-2022 走看看