In our producer we use JMS transactions to send batches of 1,000 messages to the queue. However, we faced lost messages without client notification in case of server memory limit constraints (producer flow control). The point is that the transactions all committed without exceptions, but messages that were sent after the point where the server could not store further messages got lost without notice.
Analyzing the issue showed that we were not aware of the default asynchronous send mode. In consequence we did not have set an exception listener on the connection factory. But even after remedying that we found the following situation: 1. Set the broker memory limit to a very small value (1 MB). 2. Send 100 messages via producer. With that test setup the broker can handle 95 messages. However, due to the asynchronous callback the producer is able to commit the transaction BEFORE the callback is triggered by the server. In consequence it seems that asynchronous sending breaks transactions in ActiveMQ and should not be the default mode of processing. Am I missing something? Thanks, Lars -- View this message in context: http://activemq.2283324.n4.nabble.com/Broken-transaction-when-using-async-send-tp4680119.html Sent from the ActiveMQ - User mailing list archive at Nabble.com.
