永久 JMS 连接失败但没有错误或 InactivityExceptions

我们有一个类似于这个老问题的问题。然而,我们的设置有点不同。例如,心跳应该已经存在,因为我们有来自 ActiveMQ 的默认 InactivityMonitor。

我们有一个使用嵌入式经纪人的客户。嵌入式代理有一个网络连接器,可以连接到作为机器上的独立服务运行的远程代理。通过这种方式,我们可以解耦客户端和服务器之间的通信。嵌入式代理充当客户端的本地队列。

客户端向嵌入式代理发送消息。这些消息要么通过网络连接器流向远程代理,要么(当连接暂时不可用时)留在嵌入式代理中,直到重新建立连接。

嵌入式代理和远程代理都是 Apache ActiveMQ 的实例。JMS 实现基于 Spring JMS。

在实践中,我们有时会看到奇怪的行为(通常在很长一段时间后没有任何问题):

  • 网络连接器列在远程代理管理控制台的连接选项卡中。但是,并非所有消息都在远程代理处传递。通常字节消息被卡在嵌入式代理中,而文本消息被传递到远程代理上的队列。

  • 网络连接器列在远程代理管理控制台的连接选项卡中。但是,没有消息正在远程代理处传递。

在远程代理上启用了不活动监视器。嵌入式代理是使用下面显示的代码创建的(为简洁起见省略了 SSL 代码)。

我们不知道可能导致问题的原因,更重要的是,不知道为什么设置不会自动恢复。我们希望此设置能够自动检测连接不可用并设置新连接。然而,这似乎并没有发生。

有没有人知道我们可以从哪里开始寻找,或者更好的是,知道问题可能出在哪里?


慕森卡
浏览 151回答 1
1回答

MYYA

事实证明,外部防火墙阻止了字节消息,而文本消息可以毫无问题地通过。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java