I'm looking for a messaging framework for a distributed financial application that should meet the following requirements:
- No data loss or duplication, hence, a message should be sent exactly once to each recipient
- Transactional - in the sense that a message is dequeued only after successfully sent to all recipients.
- Durable - no data loss in a case of server crash
- high availability - run multiple message buses on different servers
The system is written in Scala and Java.
I will be more than happy to use an existing framework and not develop one of my own.