qpid-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Shyamal Pandya1 <Shyamal_Pand...@symantec.com>
Subject qpid Java client keeps sending messages even if underlying session/connection does not exist
Date Sat, 12 May 2012 10:45:21 GMT
Hi,

I have a C++ QPID broker, to which a Java client sends messages (asynchronously). The broker
and client versions are 0.14. I also have the qpid message store enabled.

Whenever the queue reaches 80 % of its capacity, the broker closes the underlying session/connection.
I verify this by running qpid-stat -c and see no connections from the client.
However, the client somehow keeps sending messages, there is no exception thrown. Only when
a session.sync() is perform does it time out with a "Session DETACHED" error.

Is this a bug, or am I doing something wrong?

Code snippet:

        try
        {
            buffer.position(0);

            BytesMessage msg = qpidSession.createBytesMessage();

            msg.setJMSDeliveryMode(DeliveryMode.PERSISTENT);

            msg.writeBytes(buffer.array());

            publisher.publish(msg); // Shouldn't this throw an exception if the underlying
connection is no longer there?

            // sync after every N messages
            if(++msgCount >= MSG_SYNC_COUNT)
            {
                qpidSession.sync(); // This is where the error is thrown.
                msgCount = 0;
            }

        }
        catch (JMSException e)
        {
            if (e.getErrorCode() != null)
            {
                log.error("JMSException error code: " + e.getErrorCode());
            }

            if (e.getLinkedException() != null)
            {
                log.error("JMSException linked exception: "+ e);
            }

            connected.set(false);
            throw e;
        }


Thanks,
Shyamal

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message