美文网首页待整理
ActiveMQ消息丢失问题整理

ActiveMQ消息丢失问题整理

作者: MisterCH | 来源:发表于2017-02-22 20:07 被阅读688次

项目中的Agent分网段订阅ActiveMQ集群中VLAN.开头的Topic,但是一直会出现有agent无法收到消息的情况。针对这个现象,最近几天都在研究测试,今天有了点眉目,记录一下进展。

消息的发送有三个要素,生产者,MQ,消费者。消费者保持与MQ的长连接,使用consumer.receive方法拉取消息。目前的现象是生产者日志里记录了已经将消息发送至MQ了,但是消费者端没收到。

排查问题思路

  1. 检查消息是否真的发送至mq。
    方法:通过一个订阅所有Topic(VLAN.>)的消费者,检查MQ是否真的收到了消息。同时检查agent是否收到消息。
    结果:消费者显示MQ的确收到了,但是Agent没有收到。

  2. 由于Agent使用了消息选择器接收Topic消息,所以需要测试消息选择器是否可用。
    方法:通过下发十几个agent,检查消息选择器是否可用。
    结果:消息选择器没有问题。

  3. Agent连接是否正常
    方法:找网络的同事一起查
    结果:通过tcpdump,检查发现consumer.receive()并不会与服务器产生交互。真是见了鬼了。由于前期我关了MQ上的inactivity monitor,所以agent和mq之间出现了僵死的连接。Agent端判断连接正常,mq上又认为连接断开了。所以failover机制没生效,数据无法通信。
    解决方案:开启broker端的inactivity monitor功能。

此外,还发现了Agent在从blobmessage读取数据流的时候,读取一半就卡住了。这个问题还要再看看。。。

写这个文章的时候,生产同事又打了个电话给我,现在看到生产的电话就吓死了啊!!幸好只是问个问题。。。

相关文章

网友评论

  • e80757045c7e:感觉这种问题好难排查
    MisterCH:@叮当响_b409 可以使用插件的方式来记录一下消息流。http://www.jianshu.com/p/9b821e6894b7

本文标题:ActiveMQ消息丢失问题整理

本文链接:https://www.haomeiwen.com/subject/uinmwttx.html