You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@qpid.apache.org by "Smith, Brian 1" <br...@lmco.com> on 2016/01/21 16:22:42 UTC

Asynchronous messaging and acknowledgements

Hello,

I have a few questions related to asynchronous messaging and acknowledgements.

I'm using the Qpid JMS client with a C++ broker (v0.24).

The behavior I'm observing is that the map of unacknowledged commands within the org.apache.qpid.transport.Session objects is growing until either the command limit or the byte limit is reached.

At that point, the session is flushed and the map is cleared.

My test has a producer and a consumer.

Each are on separate sessions (non-transactional and auto_acknowledge) on the same connection to the broker.

The producer is producing byte messages to a topic exchange.

The consumer is consuming these messages through a message listener.

The queue has a ring policy on it as well.

I've confirmed that the consumer is sending acknowledgments to the broker once messages are received and processed (based on Qpid debug logging).

My question is would you expect the producer to receive acknowledgements from the broker for messages sent asynchronously?

Is the map cleared only when the limits are reached if messages are sent asynchronously?

Producer flow control is disabled as well.

Thanks,
Brian P. Smith

Re: Asynchronous messaging and acknowledgements

Posted by Brian Smith <br...@lmco.com>.
Ok that makes sense. Thanks!



--
View this message in context: http://qpid.2158936.n2.nabble.com/Asynchronous-messaging-and-acknowledgements-tp7636965p7636977.html
Sent from the Apache Qpid users mailing list archive at Nabble.com.

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


Re: Asynchronous messaging and acknowledgements

Posted by Gordon Sim <gs...@redhat.com>.
On 01/21/2016 07:10 PM, Brian Smith wrote:
> Log.txt <http://qpid.2158936.n2.nabble.com/file/n7636975/Log.txt>

In that trace, you can see that there is no ExecutionSync sent after any 
MessageTransfer is sent. That is why the broker is not sending back 
completed state (until it hits a certain limit).

I'm not very familiar with the 0-10 JMS client, but I vaguelly recall 
there may be some setting to control the frequency of syncing (or 
flushing) for async send... I think it may be the 
'qpid.session.command_limit' property from 
https://qpid.apache.org/releases/qpid-0.30/programming/book/ch03s06.html

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


Re: Asynchronous messaging and acknowledgements

Posted by Brian Smith <br...@lmco.com>.
Log.txt <http://qpid.2158936.n2.nabble.com/file/n7636975/Log.txt>  

Thanks for the quick response.

Yes the issue is with the memory growth in the client and whether or not
this is expected behavior (based on my configuration).

Thanks,
Brian P. Smith



--
View this message in context: http://qpid.2158936.n2.nabble.com/Asynchronous-messaging-and-acknowledgements-tp7636965p7636975.html
Sent from the Apache Qpid users mailing list archive at Nabble.com.

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


Re: Asynchronous messaging and acknowledgements

Posted by Gordon Sim <gs...@redhat.com>.
On 01/21/2016 03:22 PM, Smith, Brian 1 wrote:
> My question is would you expect the producer to receive acknowledgements from the broker for messages sent asynchronously?

Yes, but it would be under the clients control as to when they are sent. 
If the command has a sync flag, then the broker will sent a completion 
for that command (as well as any other completed commands) as soon as it 
is complete. If a Sync command is issued, the broker will send 
completion once all outstanding commands are complete.

Do you have a protocol trace for all or part of the exchange? That 
should let us see whether the client is requesting completions and if so 
whether the broker is properly responding.

(Is the issue memory growth in the client?)


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