How kamilmazurek/event-driven-architecture-template works
This is a Java/Spring event-driven microservice template. Its example workflow accepts an item-creation request, creates an item and event, publishes the event to Kafka, consumes it into an in-memory item store, and exposes stored items through a read endpoint. Shared model classes define the item and event contracts. The README also documents Kafka’s replay/traceability role and Actuator health checks; source excerpts do not establish replay configuration or health-check wiring, so those links are omitted.
Main entry points: ItemService.java Item service · ItemCreateController.java Create endpoint · ItemEventPublisher.java Event publisher · ItemEventListener.java Event listener
Components 14
Producer service
- Create endpoint
producer/src/main/java/template/producer/controller/ItemCreateController.java - Item service
producer/src/main/java/template/producer/service/ItemService.java - Event publisher
producer/src/main/java/template/producer/publisher/ItemEventPublisher.java
Event backbone
- Kafka broker
- Topic constants
commons/src/main/java/template/commons/model/topic/Topics.java
Consumer service
- Event listener
consumer/src/main/java/template/consumer/listener/ItemEventListener.java - Event handler
consumer/src/main/java/template/consumer/handler/ItemCreatedEventHandler.java - Item store
consumer/src/main/java/template/consumer/store/ItemStore.java - Read endpoint
consumer/src/main/java/template/consumer/controller/ItemReadController.java
Shared contracts
- Item domain
commons/src/main/java/template/commons/model/domain/Item.java - Created event
commons/src/main/java/template/commons/model/event/ItemCreatedEvent.java - Item DTO
commons/src/main/java/template/commons/model/dto/ItemDTO.java - Kafka health indicator
commons/src/main/java/template/commons/health/CustomKafkaHealthIndicator.java
Other components
- HTTP client
Connections 16
- HTTP client → Create endpoint: submits item
- Create endpoint → Item service: creates item
- Item service → Item domain: creates
- Item service → Created event: builds event
- Item service → Event publisher: publishes
- Event publisher → Topic constants: selects topic
- Event publisher → Kafka broker: sends event
- Kafka broker → Event listener: delivers event
- Event listener → Topic constants: subscribes to
- Event listener → Event handler: dispatches event
- Event handler → Item store: adds item
- Event handler → Created event: reads payload
- Read endpoint → Item store: reads items
- Read endpoint → Item DTO: maps response
- Create endpoint → Item DTO: maps response
- HTTP client → Read endpoint: requests items