Hi Branden,
On 11 October 2013 23:29, Branden Smith <[email protected]> wrote: > One additional (unrelated) question: my broker continually disconnects my > Qpid client with this message: > > [org.hornetq.core.server] HQ222067: Connection failure has been detected: > HQ119014: Did not receive data from (IP address):52922. 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] > [org.hornetq.core.server] HQ222061: Client connection failed, clearing up > resources for session 030ba507-32b9-11e3-88ff-99e2056ce319 > > I'm still not sure whether this is a problem with HornetQ's TTL > configuration (which theoretically should be waiting for 5 minutes before > timing out a client connection), or whether Qpid is not sending the > heartbeat ping correctly. > > When establishing the client-side connection, per the documentation, I'm > using this URL syntax to configure the heartbeat: > > amqp://localhost:10005/?qpid.heartbeat=10 > > Is that syntax still correct? If so, is there any way (via wire capture, > more verbose logging configuration, etc.) that I can verify that Qpid is > sending pings (or replying with pongs) correctly? > > No - that syntax doesn't work with the AMQP 1.0 client. Currently the AMQP 1.0 JMS client simply accepts the heartbeat frequency requirement that is communicated to it by the server it connects to. Since this works with other servers, my suspicion would first be that HornetQ is not properly communicating its requirements to the client (this should be sent in the idle-timeout field of the open frame). The AMQP 1.0 JMS Client uses java.util.Logging for log output. If you configure it such that the FRM Logger outputs fine level output then the following lines in ConnectionEndpoint.java should print out the frames received from the Server. private final Logger _logger = Logger.getLogger("FRM"); public synchronized void receive(final short channel, final Object frame) { if (_logger.isLoggable(Level.FINE)) { _logger.fine("RECV[" + _remoteAddress + "|" + channel + "] : " + frame); } If you look for instances of the Open fram being received then you should be able to see what value (if any) the server is setting idleTimeout to. Hope this helps, Rob Thanks, > > Branden Smith > [email protected] >
