Github user arunmahadevan commented on the issue:
https://github.com/apache/storm/pull/2639
This started out as a fix to handle the exceptions in "ack" when toCommit
was empty. However during the review process and testing, figured out many more
issues with the current approach. Also some JMS providers like Tibco supports
ACK ing individual messages, which could not be handled with the existing code.
The async mode of consuming the messages was also problematic to ensure
at-least once delivery even with locks/synchronization since ack-ing an
individual JMS message in CLIENT_ACK mode was going to ack the messages
received in the listener (even if the listener did not return).
To handle all the issues, I have refactored quite and bit and changed the
approach of consuming the messages from async (listener based) to sync
(receive) and introduced MessageHandlers to handle the emit/ack/fail in
different ways based on the mode.
@HeartSaVioR , can you review it again and let me know what you think?
---