ActiveMQ的InactivityMonitor查看哪些数据用于检查连接可用性?

时间:2017-02-15 03:45:14

标签: java jms activemq

我昨天遇到了以下例外情况。

  

org.apache.activemq.transport.InactivityIOException:频道是   也是非活动的(> 30000)长:tcp://127.0.0.1 ......

在执行队列会话的提交方法时抛出了异常。我发现在activeMQ的官方网站上抛出异常时。它说:

  

通过以下方式监控连接:

     
      
  • 确保在指定时间段内从连接中读取数据(最大不活动持续时间)。
  •   
  • KeepAliveInfo消息写入   如果没有发送正常activemq流量,则连接   在指定的时间段内连接。
  •   

  

使用默认值;如果没有数据已被写入或读取   连接30秒,InactivityMonitor启动   InactivityMonitor抛出InactivityIOException并关闭   与连接相关的传输。

我认为,我理解它的内容。但我不知道需要发送什么数据以便InactivityIOException不被抛出。我认为数据并不意味着正常的队列按摩。

确切的数据是什么?

另外,以下几个字是什么意思?

  • KeepAliveInfo消息
  • normal activemq traffic

提前致谢。

1 个答案:

答案 0 :(得分:0)

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

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

在您的情况下,似乎客户端无法从代理获取任何数据,并且它确定连接或代理必须是错误的。您需要调查经纪人和客户的日志,以尝试查看发生这种情况时发生的情况。