Spring Boot service that consumes Dispatch service topics and dispatch.tracking events from Kafka and publishes tracking updates to tracking.status.
- Java 21
- Kafka running on
localhost:9092for local execution
./gradlew bootRun./gradlew builddispatch.tracking: consumed by this service, contains multiple event types fromDispatchtracking.status: produced by this service with the derived tracking status
SPRING_KAFKA_BOOTSTRAP_SERVERS: Kafka bootstrap servers
Default:
localhost:9092
This service consumes dispatch.tracking events produced by the Dispatch service.
Supported input payloads:
DispatchPreparing:
{
"orderId": "26b6f2b1-cc22-42f8-8285-82b8d309d1ae"
}DispatchCompleted:
{
"orderId": "26b6f2b1-cc22-42f8-8285-82b8d309d1ae",
"date": "2026-03-31T09:08:58.489926885Z"
}Produced output payloads on tracking.status:
For DispatchPreparing:
{
"orderId": "26b6f2b1-cc22-42f8-8285-82b8d309d1ae",
"status": "PREPARING"
}For DispatchCompleted:
{
"orderId": "26b6f2b1-cc22-42f8-8285-82b8d309d1ae",
"status": "COMPLETED"
}To test end-to-end locally:
- Start Kafka
- Start Dispatch service
- Start Tracking service
- Publish an order.created event to Kafka
Consume dispatch.tracking:
bin/kafka-console-consumer.sh \
--bootstrap-server localhost:9092 \
--topic dispatch.tracking \
--formatter-property print.key=true \
--from-beginningExpected output:
my-key {"orderId":"26b6f2b1-cc22-42f8-8285-82b8d309d1ae"}
my-key {"orderId":"26b6f2b1-cc22-42f8-8285-82b8d309d1ae","date":"2026-03-31T09:08:58.489926885Z"}
Consume tracking.status:
bin/kafka-console-consumer.sh \
--bootstrap-server localhost:9092 \
--topic tracking.status \
--formatter-property print.key=true \
--from-beginningExpected output:
26b6f2b1-cc22-42f8-8285-82b8d309d1ae {"orderId":"26b6f2b1-cc22-42f8-8285-82b8d309d1ae","status":"PREPARING"}
26b6f2b1-cc22-42f8-8285-82b8d309d1ae {"orderId":"26b6f2b1-cc22-42f8-8285-82b8d309d1ae","status":"COMPLETED"}