java - ActiveMQ的InactivityMonitor会看到哪些数据来检查连接可用性?

标签 java jms activemq

我昨天遇到了以下异常。

org.apache.activemq.transport.InactivityIOException: Channel was inactive for too (>30000) long: tcp://127.0.0.1......

执行队列 session 的提交方法时引发异常。我在activeMQ的官网上查到了抛出异常的时间。它说:

Connections are monitored by:

  • Ensuring data is read from the connection during the specified time period (Max Inactivity Duration).
  • Writing a KeepAliveInfo message to the connection if no normal activemq traffic is sent across the connection during the specified time period.

Using the default values; if no data has been written or read from the connection for 30 seconds, the InactivityMonitor kicks in. The InactivityMonitor throws an InactivityIOException and shuts down the transport associated with the connection.

我想我明白它说的是什么。但我不明白需要发送什么数据才能不引发 InactivityIOException 。我认为这些数据并不意味着正常的队列按摩。

数据到底是什么?

另外,下面这几个词是什么意思??

  • KeepAliveInfo消息
  • 正常的 activemq 流量

提前致谢。

最佳答案

线路上的数据是从客户端到代理来回传输的任何字节。不活动监视器跟踪自上次发送或接收某些字节以来已经过去了多长时间,这可以是任何数据,因为它意味着连接未处于半关闭状态或远程挂起等。

通常,往返于代理的常规消息流足以保持连接 Activity ,但当情况变得安静时,不活动监视器开始向代理发送 KeepAliveInfo 数据包,并且代理将以同样的方式响应,这充当PING 和 PONG 以确保套接字连接仍然有效。

在您的情况下,客户端似乎无法从代理返回任何数据,并且它认为连接或代理一定有故障。您需要调查代理和客户端的日志,以尝试了解发生这种情况时发生的情况。

关于java - ActiveMQ的InactivityMonitor会看到哪些数据来检查连接可用性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42240338/

相关文章:

jms - Apache Camel 和 Stomp

java - ACTIVEMQ-发布者订阅者 Hello World 示例

jakarta-ee - Wildfly 上的 JMS 2.0 QueueBrowser 不返回消息

java - ActiveMQ JMS ping

jms - ActiveMQConnectionFactory 中的 nonBlockingRedelivery 是什么

java - 如何设计动态java程序

java - 如何使用Xsoup将Xpath转换为CSS选择器?

java - Spring Websocket 客户端 react 器超时

java - 错误 java.lang.IndexOutOfBoundsException : Invalid index 0, size is 0 in my program android

java - 使用 Active MQ 的示例 JMS 示例