Benennung vereinheitlicht und projektunabhängig gemacht
[demos/kafka/training] / README.sh
1 #!/bin/bash
2
3 IMAGE=juplo/endless-consumer:1.0-SNAPSHOT
4
5 if [ "$1" = "cleanup" ]
6 then
7   docker-compose down -v
8   mvn clean
9   exit
10 fi
11
12 docker-compose stop producer consumer
13 docker-compose up -d zookeeper kafka cli
14
15 if [[
16   $(docker image ls -q $IMAGE) == "" ||
17   "$1" = "build"
18 ]]
19 then
20   docker-compose rm -svf consumer
21   mvn clean install || exit
22 else
23   echo "Using image existing images:"
24   docker image ls $IMAGE
25 fi
26
27 echo "Waiting for the Kafka-Cluster to become ready..."
28 docker-compose exec cli cub kafka-ready -b kafka:9092 1 60 > /dev/null 2>&1 || exit 1
29
30 docker-compose exec -T cli bash << 'EOF'
31 echo "Creating topic with 3 partitions..."
32 kafka-topics --bootstrap-server kafka:9092 --delete --if-exists --topic test
33 # tag::createtopic[]
34 kafka-topics --bootstrap-server kafka:9092 --create --topic test --partitions 3
35 # end::createtopic[]
36 kafka-topics --bootstrap-server kafka:9092 --describe --topic test
37 EOF
38
39 docker-compose up -d producer consumer
40 while ! [[ $(http 0:8080/actuator/health 2> /dev/null) =~ "UP" ]]; do echo "Waiting for producer..."; sleep 1; done
41 while ! [[ $(http 0:8081/actuator/health 2> /dev/null) =~ "UP" ]]; do echo "Waiting for consumer..."; sleep 1; done
42 while [[ "$(http :8081/state | jq -r .)" == "{}" ]]; do echo "Waiting for some state to show up..."; done
43
44 http -v :8081/state
45
46 docker-compose stop producer
47 docker-compose exec -T cli bash << 'EOF'
48 echo "Altering number of partitions from 3 to 7..."
49 # tag::altertopic[]
50 kafka-topics --bootstrap-server kafka:9092 --alter --topic test --partitions 7
51 kafka-topics --bootstrap-server kafka:9092 --describe --topic test
52 # end::altertopic[]
53 EOF
54
55 docker-compose start producer
56 while ! [[ $(http 0:8080/actuator/health 2> /dev/null) =~ "UP" ]]; do echo "Waiting for producer..."; sleep 1; done
57
58 sleep 1
59 http -v :8081/state
60 sleep 1
61 http -v :8081/state
62 sleep 1
63 http -v :8081/state
64 sleep 1
65 http -v :8081/state
66 sleep 1
67 http -v :8081/state
68 sleep 1
69 http -v :8081/state
70 sleep 1
71 http -v :8081/state
72 sleep 1
73 http -v :8081/state
74 sleep 1
75 http -v :8081/state
76 sleep 1
77 http -v :8081/state
78 sleep 1
79 http -v :8081/state
80 sleep 1
81 http -v :8081/state
82 sleep 1
83 http -v :8081/state
84
85 docker-compose stop producer