Setup with a scalable transfer-service (uses a consumer-group)
[demos/kafka/demos-kafka-payment-system-setup] / README.sh
1 #!/bin/bash
2
3 if [ "$1" = "cleanup" ]
4 then
5   docker-compose down
6   mvn clean
7   exit
8 fi
9
10 mvn package || exit 1
11 if [ ! -e transfer/target/BUILD ] || [ "$(find transfer/target/classes/ -anewer transfer/target/BUILD | grep transfer/target/classes/de )" != "" ]
12 then
13   echo "Rebuilding Docker-Image..."
14   docker-compose rm -svf peter ute franz beate klaus
15   mvn -f transfer/pom.xml docker:build
16   touch transfer/target/BUILD
17 fi
18 if [ "$1" = "build" ]; then exit; fi
19
20 docker-compose up -d zookeeper kafka
21
22 while ! [[ $(docker-compose run --rm kafka zookeeper-shell zookeeper:2181 ls /brokers/ids 2> /dev/null) =~ 1001 ]]; do echo "Waiting for kafka..."; sleep 1; done
23
24 docker-compose run --rm kafka kafka-topics --zookeeper zookeeper:2181 --if-not-exists --create --replication-factor 1 --partitions 5 --topic transfers
25
26 docker-compose up -d peter ute franz beate klaus
27
28 docker-compose run --name transferlog --rm kafka kafka-console-consumer --bootstrap-server kafka:9093 --topic transfers &
29 while ! [[ $(http 0:8091/actuator/health 2> /dev/null | jq -r .status ) =~ "UP" ]]; do echo "Waiting for peter..."; sleep 1; done
30
31 echo '{"id":1,"payer":1,"payee":2, "amount":10}' | http -v :8091/transfers
32 http --follow :8091/transfers/1
33 http -v  :8091/transfers id=2 payer=2 payee=1 amount=5
34 http --follow :8091/transfers/2
35 http -v  :8091/transfers id=12 payer=2 payee=1 amount=5
36 http -v  :8091/transfers id=21 payer=2 payee=1 amount=5
37 http -v  :8091/transfers id=7  payer=2 payee=1 amount=5
38 http -v  :8091/transfers id=9  payer=2 payee=1 amount=5
39 http -v  :8091/transfers id=13 payer=2 payee=1 amount=5
40 http -v  :8091/transfers id=31 payer=2 payee=1 amount=5
41 http -v --follow :8091/transfers/12
42 http -v --follow :8091/transfers/21
43 http -v --follow :8091/transfers/7
44 http -v --follow :8091/transfers/9
45 http -v --follow :8091/transfers/13
46 http -v --follow :8091/transfers/31
47
48 docker-compose restart peter ute franz beate klaus
49 while ! [[ $(http 0:8091/actuator/health 2> /dev/null | jq -r .status ) =~ "UP" ]]; do echo "Waiting for peter..."; sleep 1; done
50 http -v --follow :8091/transfers/1
51 http -v --follow :8091/transfers/2
52 http -v --follow :8091/transfers/12
53 http -v --follow :8091/transfers/21
54 http -v --follow :8091/transfers/7
55 http -v --follow :8091/transfers/9
56 http -v --follow :8091/transfers/13
57 http -v --follow :8091/transfers/31
58
59
60 docker container stop transferlog