LibraryToggle FramesPrintFeedback

Fuse Message Broker supports the following acknowledgment modes:

Session.AUTO_ACKNOWLEDGE

(Default) In this mode, the session automatically acknowledges a message either after MessageConsumer.receive() returns successfully or, if using the callback model, after the call to MessageListener.onMessage() returns.

Session.CLIENT_ACKNOWLEDGE

In this mode, the client application code explicitly calls the Message.acknowledge() method to acknowledge the message. In Apache Camel, this acknowledges not just the message on which it is invoked, but also any other messages in the consumer that have already been completely processed.

Session.DUPS_OK_ACKNOWLEDGE

In this mode, the JMS session automatically acknowledges messages, but does so in a lazy manner. If JMS fails while this mode is used, some messages that were completely processed could remain unacknowledged. When JMS is restarted, these messages will be re-sent (duplicate messages).

This is one of the fastest acknowledgment modes, but the consumer must be able to cope with possible duplicate messages (for example, by detecting and discarding duplicates).

Session.SESSION_TRANSACTED

When using transactions, the session implicitly works in SESSION_TRANSACTED mode. The response to the transaction commit is then equivalent to message acknowledgment.

When JMS transactions are used to group multiple messages, transaction mode is very efficient. But avoid using a transaction to send a single message, because this incurs the extra overhead of committing or rolling back the transaction.

ActiveMQSession.INDIVIDUAL_ACKNOWLEDGE

This non-standard mode is similar to CLIENT_ACKNOWLEDGE, except that it acknowledges only the message on which it is invoked. It does not flush acknowledgments for any other completed messages.

Comments powered by Disqus