README.adoc
June 5, 2018 ยท View on GitHub
= Scalable, event-driven coffee shop
How to use event sourcing in several services with an event-driven architecture, Apache Kafka and Java EE.
== Run
. Start Apache Kafka brokers, e.g. using Docker compose: https://github.com/wurstmeister/kafka-docker[wurstmeister/kafka-docker^].
Configure the KAFKA_ADVERTISED_HOST_NAME to your corresponding IP address.
. Configure each of the kafka.properties files with bootstrap.servers=<your-IP>:9092.
. Build and run the individual instances.
On each of the orders/, beans/ and barista/ directories, execute build-run-local.sh.
This builds the Gradle project, builds the Docker image and starts a new instance of the given service.
== Usage
The following will demonstrate the usage of the HTTP endpoints and example responses.
. In order to create coffee orders you have to add beans to the beans storage first:
$> curl http://localhost:8002/beans/resources/beans -i -XPOST
-H 'content-type: application/json'
-d '{"beanOrigin": "Colombia", "amount": 10}'
HTTP/1.1 204 No Content X-Powered-By: Undertow/1 Server: WildFly/10 Date: Fri, 17 Nov 2017 20:49:26 GMT
. Check the creation of the beans:
$> curl http://localhost:8002/beans/resources/beans
{"Colombia":10}
. Create a new coffee order:
$> curl http://localhost:8001/orders/resources/orders/ -i -XPOST
-H 'Content-type: application/json'
-d '{"beanOrigin": "Colombia", "coffeeType": "Espresso"}'
HTTP/1.1 202 Accepted Connection: keep-alive X-Powered-By: Undertow/1 Server: WildFly/10 Location: http://localhost:8001/orders/resources/orders/c099c158-b748-4115-bed3-7b5dfff70771 Content-Length: 0 Date: Fri, 17 Nov 2017 20:51:16 GMT
. Check the creation of the coffee order using your Location header, for example:
$> curl http://localhost:8001/orders/resources/orders/c099c158-b748-4115-bed3-7b5dfff70771