Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
5.7.0
-
None
Description
When a stomp 1.1 client:
a) connects to a stomp+nio transport
b) elects to send heartbeats when the network is idle
the first several heartbeat sends appear to succeed, but then the connection is forcibly closed by the broker.
From activemq.log:
2012-10-14 09:53:07,755 | WARN | Transport Connection to: tcp://127.0.0.1:36440 failed: org.apache.activemq.transport.InactivityIOException: Channel was inactive for too (>10000) long: tcp://127.0.0.1:36440 | org.apache.activemq.broker.TransportConnection.Transport | ActiveMQ InactivityMonitor Worker
From wrapper.log:
INFO | jvm 1 | 2012/10/14 09:53:07 | WARN | Transport Connection to: tcp://127.0.0.1:36440 failed: org.apache.activemq.transport.InactivityIOException: Channel was inactive for too (>10000) long: tcp://127.0.0.1:36440
I am able to reproduce this with either:
a) the current Ruby stomp gem
b) the current golang stompngo package
It is unclear to me whether:
a) the AMQ heartbeat code is not tolerant as the specification suggests
b) the AMQ heartbeat receiver is not reading or recognizing heartbeats at all
In all cases these tests succeed with either:
a) AMQ 5.7.0 stomp without nio
b) Apollo
c) RabbitMQ
d) a client that only receives heartbeats, but does not send them
I will attach a Ruby client example shortly.