Apache Sandesha is a reliable messaging system that ensures messages are delivered:
For more information read the Standards and Interoperation pages.
This page is about the Java implementation that works with Apache Axis2/Java.
There are also other projects:
Sandesha2 is a module that plugs into Axis2 to turn it into a reliable messaging system. Sandesha2 uses its own thread pools to ensure that any dropped messages are resent automatically. It uses acknowledgments to ensure that messages are delivered, and every message is numbered, allowing messages to be delivered in-order.
Sandesha can support persistent reliability through a pluggable storage manager interface, as well as an in-memory store. When used with a persistent, recoverable store, Sandesha can reliably deliver messages in the event of remote system failure, network failure and/or local system failure. Sandesha supports transaction behaviour through a pluggable transaction interface. This means that applications can send messages or dispatch service requests under a transaction and the messages will be stored within Sandesha in the same transaction. For more information, please read the Transactions page.