Sample project that demonstrates an event driven architecture backed by kafka. The system consists of 4 microservices: waiter, kitchen, stockroom and cashier. Each service is built on top of the Axon Framework and uses Event Sourcing for persistence.
Integration between the services are achieved via Kafka Topics. Each service produces public events by publishing to an events-topic for the given service in the Avro format (e.g. waiter-events-value). Each topic can hold multiple event types and each event has a separate versioned Avro schema. The schema for the topic then uses a union with schema references to define the set of event types that can be published on the topic. The benefit of mixing event types on the same topic is that events related to a specific aggregate/entity will be ordered within the topic. Services are free to collaborate by consuming events from the topics of other services.
Batect System Requirements include:
- Docker
- Java 8 or newer
- Bash
- curl
Ensure that docker has at least 4GB of memory available, the batect command will launch a kafka server with schema registry and a separate docker container for each service.
$ ./batect go
The UI is available at http://localhost:4200. Kafka/Schema registry UI can be found at http://localhost:3030.

