消息丢失现场:
预约成功消息,偶发收不到消息.
1)排查发现rocketmq 生产者 发送到mq成功。
2)消费者没消费到对应消息
现场情况分析
分析:rocketMq消息都是有多种可能原因:
1)mq消息异步 刷盘机制, 可以优化为同步刷盘机制
2)mq集群异步复制 , 可以优化为 同步复制机制。
3)mq消息发送失败记录,并做发送重试机制。
4)生产消息的发送机制,做同步发送机制。 (生产发送消息: 同步,异步, oneway)
发现排查原因:
猜测可能后,落地实处,需要找到当前问题的原因,有图有真相(有图有日志)。
安装mq-console 查看topic状态 及consume消费情况:
1)根据生产的messageId 查找消息。 发现在mq可以找到。 明确消息发送成功。
2)消费失败,consume 发现有两个队列 未消费的消息在堆积。
3)消息堆积的 设置topic的 写队列,读队列的配置。
4) opic::rubik-hospital 写队列2 ,读队列4 : 控制堵塞队列不写数据。
5)topic::new-rubik-hospital 写队列2 读队列4, --- 0,1队列有消息进队列, 2 3 队列无消息,
但是 消费者还是都是在2,3 队列, 0,1 队列 消息全部堵塞。
关键:consume消费者需要分开:
DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("please_rename_unique_group_name_13"); consumer.setNamesrvAddr("10.11.218.245:9876"); consumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_FIRST_OFFSET); consumer.subscribe("TopicTest", "TagA || TagC || TagD");
topic: rubik-hospital
new-rubik-hospital
最后
以上就是时尚心情最近收集整理的关于rocketMQ 消息丢失-生产消息发送成功,消费者没消费到消息的全部内容,更多相关rocketMQ内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复