我有一个基于 Camel/Spring 的 Java MQ 客户端,它应该连接到 MQ 并从队列中获取一些消息。连接已建立,但客户端未下载任何消息。 Wireshark 网络分析显示,经过一些初始处理后,会生成 MQCLOSE,之后仅出现心跳流量。
IBM MQ 服务器版本为 8.0.0.5,而客户端 JAR 版本为 7.1.0.3。但我相信这种组合适用于其他环境。
我已经在其他一些环境中检查了该应用程序,它工作正常,并且在 MQCLOSE_REPLY 之后出现了许多其他消息,首先是 Wireshark 识别为 SOCKET_ACTION 的消息。但在这个环境上不会发生这种情况,为什么?
最佳答案
您的应用程序没有请求任何消息,这就是它没有收到任何消息的原因。
根据非工作环境中的网络跟踪片段,它只是连接(打开、查询和关闭队列管理器 - 它在连接处理期间和 MQCONN 之后执行)。创建的连接不会被使用 - 没有 MQGET 或 SPI 流,只有心跳。
为什么你要尝试使用网络数据包跟踪来调试它?!
查看应用程序并弄清楚它在连接后执行的操作,并确定它不请求任何消息的原因。
关于Java IBM MQ 客户端已连接但未从队列获取消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46846718/