Hi Shyamal,

By default, MessageProducer#send operation is asynchronous, i.e. a
message is put on a wire and producer does not wait for the broker
confirmation.

You can make this operation synchronous by setting JVM system property
-Dsync_publish=all or -Dsync_publish=persistent or through connection
URL option sync_publish.

Setting sync_publish=persistent will make publisher to sync only
persistent messages, whilst setting sync_publish=all will make
publisher to sync both transient and persistent messages.

This setting is only applicable for 0.10 amqp client (which is the default).

Kind Regards,
Alex

On 12 May 2012 11:45, Shyamal Pandya1 <[email protected]> wrote:
> 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

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to