Software
When we start working with DDD and event-oriented architectures in anger, we soon find that we need some help brokering our messages to ensure the at-least-once and at-most-once delivery that is required by the application. We could, of course, implement our strategy for this. However, there are many open source projects on the internet that handle this capability for us, and soon we find ourselves reaching out to leverage one of these.
Kafka
Kafka is a distributed streaming platform that allows you to publish and subscribe to streams of records. It lets you store streams of documents in a fault-tolerant way and process streams of records as they occur. It has been designed to be a fast and fault-tolerant system commonly running as a cluster of one or more servers to enable redundancy.
NATS.io
NATS.io is an open source messaging system written in Go, and it has the ability to perform two roles, such as at-most-once and at-least-once delivery. Lets look at what they mean:
- At-most-once...