RocketMQ实战经验

  1. 服务端通过Tag过滤时,同一个消费组的消费者订阅同一个Topic只允许一个Tag(*或者明确的一个Tag,或者以 || 分隔的Tags),后启动的会覆盖先启动的Tag;不同消费组的消费者订阅同一个Topic,允许不同组过滤不同的Tag

  2. 消息生产者发送失败重试是在同步模式下有效,发送状态失败和发送时出现特定的异常时重试,其他异常会直接抛出。失败重试需要设置重试次数和发送超时时间

  3. consumeThreadMinconsumeThreadMax控制消费者并发的线程数,注意:由于消费者线程池使用的是无界队列,因此消费者消费线程数最多只有consumeThreadMin(线程池的最大线程数只有在线程池使用队列是有界队列,并且有界队列已满,并且核心线程都在运行时,线程池才会创建新的线程,直到数量等于最大线程数)

  4. consumeMessageBatchMaxSize设置消费者一次消费消息的条数,注意:只有先启动producer并且发送了消息,再启动consumer时有效,之后producer再发送消息时,也只能消费一条

  5. 在一个JVM中的所有消费者、生产者持有同一个MQClientInstance,并且只会启动一次

  6. 消息队列的分配算法

    AllocateMessageQueueAveragely:平均分配,默认策略,推荐使用
    AllocateMessageQueueAveragelyByCircle:平均轮询分配,推荐使用
    AllocateMessageQueueConsistentHash:一致性Hash。不推荐使用,因为消息队列负载信息不容易跟踪
    AllocateMessageQueueByConfig:根据配置,为每一个消费者配置固定的消息队列
    AllocateMessageQueueByMachineRoom:根据Broker部署机房名,对每个消费者负载不同的Broker上的队列

  7. 消息队列的分配原则
    消息队列的分配遵循一个消费者可以分配多个消息队列,但同一个消息队列只会分配给一个消费者,因此如果消费者个数大于消息队列数量,则有些消费者无法消费消息。注意:消费者客户端可以设置并发线程来消费一个或对个消息队列

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值