Jms 客户端无法在HornetQ服务器上连接

Jms 客户端无法在HornetQ服务器上连接,jms,spring-jms,hornetq,Jms,Spring Jms,Hornetq,我有一个spring boot应用程序作为HornetQ服务器,还有10个客户端应用程序可以毫无问题地发送和接收消息。 但有一个特定的客户端拒绝连接,但有以下例外: org.springframework.jms.UncategorizedJmsException: Uncategorized exception occured during JMS processing; nested exception is javax.jms.JMSException: HQ119014: Timed o

我有一个spring boot应用程序作为HornetQ服务器,还有10个客户端应用程序可以毫无问题地发送和接收消息。 但有一个特定的客户端拒绝连接,但有以下例外:

org.springframework.jms.UncategorizedJmsException: Uncategorized exception occured during JMS processing; nested exception is javax.jms.JMSException: HQ119014: Timed out waiting for response when sending packet 30
  at org.springframework.jms.support.JmsUtils.convertJmsAccessException(JmsUtils.java:316)
  at org.springframework.jms.support.JmsAccessor.convertJmsAccessException(JmsAccessor.java:169)
  at org.springframework.jms.core.JmsTemplate.executeLocal(JmsTemplate.java:987)
  at org.springframework.jms.core.JmsTemplate.sendAndReceive(JmsTemplate.java:923)
  at coral.rapidreconciler.agent.jms.AgentConnectionJms.connectToValc(AgentConnectionJms.java:52)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
  at java.lang.reflect.Method.invoke(Unknown Source)
  at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:65)
  at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54)
  at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
  at java.util.concurrent.FutureTask.runAndReset(Unknown Source)
  at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(Unknown Source)
  at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
  at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
  at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
  at java.lang.Thread.run(Unknown Source)
Caused by: javax.jms.JMSException: HQ119014: Timed out waiting for response when sending packet 30
  at org.hornetq.core.protocol.core.impl.ChannelImpl.sendBlocking(ChannelImpl.java:390)
  at org.hornetq.core.client.impl.ClientSessionFactoryImpl.createSessionInternal(ClientSessionFactoryImpl.java:891)
  at org.hornetq.core.client.impl.ClientSessionFactoryImpl.createSessionInternal(ClientSessionFactoryImpl.java:800)
  at org.hornetq.core.client.impl.ClientSessionFactoryImpl.createSession(ClientSessionFactoryImpl.java:337)
  at org.hornetq.jms.client.HornetQConnection.authorize(HornetQConnection.java:719)
  at org.hornetq.jms.client.HornetQConnectionFactory.createConnectionInternal(HornetQConnectionFactory.java:762)
  at org.hornetq.jms.client.HornetQConnectionFactory.createConnection(HornetQConnectionFactory.java:112)
  at org.hornetq.jms.client.HornetQConnectionFactory.createConnection(HornetQConnectionFactory.java:107)
  at org.springframework.jms.core.JmsTemplate.executeLocal(JmsTemplate.java:976)
  ... 15 common frames omitted
Caused by: org.hornetq.api.core.HornetQConnectionTimedOutException: HQ119014: Timed out waiting for response when sending packet 30
  ... 24 common frames omitted
在服务器上,此行显示在日志上:

2016-01-29 16:22:19.389  WARN 4764 --- [re-check-thread] org.hornetq.core.client                  : HQ212037: Connection failure has been detected: HQ119014: Did not receive data from /xx.xxx.xx.xxx:61350. It is likely the client has exited or crashed without closing its connection, or the network between the server and client has failed. You also might have configured connection-ttl and client-failure-check-period incorrectly. Please check user manual for more information. The connection will now be closed. [code=CONNECTION_TIMEDOUT]

有什么方法可以发现这个客户的问题吗?防火墙、代理、网络、资源、版本?

可能会出现网络问题,我会做一些事情:

1) 从有问题的客户端Ping HornetQ并从HornetQ服务器Ping客户端。如果您无法从任何一方ping,则可能是配置问题,例如坏的网络掩码或网关或其他问题。Traceroute/tracert是你的朋友

2) 从有问题的客户端,尝试telnet到端口5446上的Hornetq服务器(假设您使用的是默认端口)。如果端口打开,请键入一些垃圾字符并查看是否收到响应,即使垃圾收到某种响应,也应表明客户端可以访问服务器


3) 打开更多日志记录,这取决于它的配置方式,或者您是否在JBoss或其他应用程序服务器中运行,可能会改变您特别想要做的事情,在不知道实现细节的情况下无法告诉您。客户端调试日志应该是你的朋友。

Telnet可以工作(这是有趣的部分),日志在跟踪中,但我在那里找不到任何有用的东西。有防火墙或嗅探流量的东西吗?无法访问JBoss/Hornetq的客户端与可以连接的客户端在不同的子网中吗?在这两者之间是否有什么东西可以根据内容过滤特定的流量?可能是telnet到端口5446不会触发任何事件,因为您没有使用正确的协议发送数据,但实际的Hornetq消息会触发。您在JBoss日志中没有看到任何东西,这意味着它甚至没有得到它,这可能值得在操作系统上尝试netstat-a。您还可以检查JBoss正在侦听的内容,可能是特定的子网。