rocketmq 消息出现 NOT_CONSUME_YET

问题

data-srv测试服存在消息,一直处于NOT-CONSUME-YET状态,几率很大。

排查过程

  1. 检查订阅sdk,确认是否回复ack.√
    • 修正订阅时,拉取到多个msg时,只处理一个handler的问题。 该bug不会造成not-consume。
    • 修正路由注册时,可能造成subscirbe同一个topic/tag多次的问题。 该bug不会造成not-consume。
    • 确认了已经回复了ack。
  2. 检查consumergroup,是否存在订阅关系不一致。.√
    • 检查了消费方的消费组名,都叫GID_datasrv_test,没有问题.
    • 确认了该应用组都是一套代码,订阅话题相同,没有问题。
  3. 检查是否有其它应用,错用了消费组,存在异常竞争。
    • 在第一步和第二步无法查到错误的前提下,决定对测试服节点关停,只留一个本地节点,测试sdk。
    • 测试服关停后,后台发现 GID_datasrv_test 的节点数量依旧为2,x.x.x.x:31556
    • 登录测试服,使用 sudo lsof -i:31556, 发现cardlibsrv竟然在datasrv_test的消费组里。
  4. 修正
    • 通知cardlibsrv负责人,更换消费组名。
    • GID_datasrv_test暂时修改为GID_datasrv_test_v2.
    总结
    • 同一个应用组,必须保持订阅关系一致。如果另一个应用误设consumername,哪怕没有显式执行subscribe,也会造成rocketmq将消息意外投递到该应用去。
    • 消费组集群在多节点部署时,允许增量消息短暂失败,走重试逻辑。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值