We're building a Java based application that makes use of a journal/write-ahead-log (WAL). The idea is that every message that enters the system is first written into the journal before any processing. The journal acts as a single source of truth and we replay messages from it in case of failure.
We have following requirements:
- durability - messages should be written to persistent storage
- reliable network replication - the journaling technology should replicate (synchronously) to multiple nodes, so we are sure data are not lost in case one node goes down
So far we consider following technologies that satisfy requirements above:
- Chronicle Queue - replication in Enterprise version only
- Apache Kafka
I'd like to ask for a suggestions of other technologies that would be suitable for this case.