RocketMq 实战总结

1.org.apache.rocketmq.remoting.exception.RemotingTooMuchRequestException: sendDefaultImpl call timeout
大量执行批量发送操作时偶现该问题,通过调整增加发送超时时间解决
2.consumeThreadMin(消费者最小线程数) consumeThreadMax(消费者最大线程数)
由于mq使用的是无界队列,理论上是不会使用到consumeThreadMax,所以基本上要使用多少线程需要配置consumeThreadMin
另外注意同步修改consumeThreadMax不能小于最小线程数,不然启动的时候会报错
3.关于批量消费最大值是32的问题,即时设置超过32也不生效
pullBatchSize 批量拉取的数量(默认32)
consumeMessageBatchMaxSize 批量消费的数量(默认32)
consumeMessageBatchMaxSize不能超过pullBatchSize的大小
pullBatchSize 的大小受服务端broker配置限制,所以客户端设置pullBatchSize超过32不生效
4.广播模式消息堆积问题
由于本地测试的时候也会注册消费者到broker,但是后续发送消息的时候可能很多消费者都不在线,没有消费能力导致消息堆积
最好是需要几个消费者就注册几个避免消费混乱
5.关于消息重试次数
消费者默认重试maxReconsumeTimes(默认-1),会判断-1的话重试16次
广播模式消费者不支持重试
6.消费策略
CONSUME_FROM_LAST_OFFSET 每次启动都会从队列首部开始消费,后续根据上次消费的位置继续消费
CONSUME_FROM_FIRST_OFFSET 每次启动都会从队列尾部开始消费,后续根据上次消费的位置继续消费
以上是实测发现的结果
7.消费模型
consumer.setMessageModel(MessageModel.CLUSTERING); 集群模式(默认)
consumer.setMessageModel(MessageModel.BROADCASTING);广播模式
同一个消费者组,广播模式下每一个消费者都接收全量消息
同一个消费者组,集群模式下每一个消费者接收的消息加起来是全量消息
集群模式下,不同消费者组都接收全量消息

  • 20
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值