You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@qpid.apache.org by Branden Smith <BS...@liaison.com> on 2013/10/11 23:29:22 UTC

AMQP-JMS client: heartbeat / TTL

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?

Thanks,

Branden Smith
bsmith@liaison.com

RE: AMQP-JMS client: heartbeat / TTL

Posted by Branden Smith <BS...@liaison.com>.
Hi Rob,

Thank you for your reply.  After enabling the logging, it looks like your suspicions were correct; there does not appear to be any indication of the idle-timeout on the Open frame:

Oct 14, 2013 5:21:17 PM org.apache.qpid.amqp_1_0.transport.ConnectionEndpoint receive
FINE: RECV[(host omitted):10005|0] : Open{containerId=,hostname=}

I've posed the question to the HornetQ discussion forum; hopefully someone there will be able to advise if there's some configuration I can set so that HornetQ will send the idle-timeout: https://community.jboss.org/message/841625

Thanks,


Branden Smith
Lead Platform Architect
bsmith@liaison.com

Liaison Technologies, Inc.
3157 Royal Drive | Suite 200 | Alpharetta, Georgia 30022
www.liaison.com | 866.336.7378


-----Original Message-----
From: Rob Godfrey [mailto:rob.j.godfrey@gmail.com] 
Sent: Friday 2013.10.11 18:06
To: users@qpid.apache.org
Subject: Re: AMQP-JMS client: heartbeat / TTL

Hi Branden,


On 11 October 2013 23:29, Branden Smith <BS...@liaison.com> 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
> bsmith@liaison.com
>


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org
For additional commands, e-mail: users-help@qpid.apache.org


Re: AMQP-JMS client: heartbeat / TTL

Posted by Rob Godfrey <ro...@gmail.com>.
Hi Branden,


On 11 October 2013 23:29, Branden Smith <BS...@liaison.com> 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
> bsmith@liaison.com
>