Details
-
Improvement
-
Status: Closed
-
Critical
-
Resolution: Fixed
-
3.0.1
-
None
Description
ServiceMix can loose (incoming) messages during a crashing.
The test-setup is simple: one process populates a queue, servicemix reads this queue and writes each message in a second queue, which is consumed by a second process. During this test servicemix is killed and restarted.
My test results showed that some times some messages are lost. Looking in the source code reveals that reading from the queue is done with an AUTO_ACKNOWLEDGE, which implies that there is no dependency between doing an (implicit) commit on the queue and successful sending of a message to another JBI endpoint. Apparently, this can result in lost messages if servicemix crashes. I could possibly use the JCAProcessor, but then I need an external transaction manager.
I suggest to extend the servicemix-jms binding component with the (configurable) ability to make the read of an input queue dependent on the successful NMR send. This would add more realiability to servicemix, if needed, payed with a (small) loss of effeciency for wating on receiving a DONE as MessageExchange status.
Attachments
Issue Links
- is superceded by
-
SM-537 Define several endpoint implementations instead of having only one
- Resolved