Kafka Streams, GDPR and Event Sourcing

This code is the companion of the blog post Kafka, GDPR and Event Sourcing

This project uses Docker to create a cluster of 3 microservices that consume from a Kafka topic using the Kafka Streams API.

Usage

Docker should be installed.

To run:

 docker-compose up -d && docker-compose logs -f our-service our-service2 our-service3

Once the environment has been started, you have to add some data:

 curl --data "client=id1&name=Dan" -X POST http://localhost:3004/set-data
 curl --data "client=id1&name=Lebrero" -X POST http://localhost:3004/set-data

You will see in the logs that the event-consumer logs something like:

[KSTREAM-REDUCE-0000000004]: id1, (Dan,Lebrero<-null)

To exercise the "right to erasure":

 curl --data "client=id1" -X POST http://localhost:3004/forget-me

Which should result on the event-consummer logging:

 [KSTREAM-REDUCE-0000000004]: id1, (forget-me!<-null)

Clean up

To get rid of all:

docker-compose down --rmi all --remove-orphans
docker image rm pandeiro/lein:2.5.2