`git-commit-id-plugin` stört bei neuem (alten) Setup für Musterlösungen
[demos/kafka/training] / README.sh
1 #!/bin/bash
2
3 IMAGE=juplo/rest-producer:1.0-SNAPSHOT
4
5 if [ "$1" = "cleanup" ]
6 then
7   docker-compose -f docker/docker-compose.yml down -t0 -v --remove-orphans
8   mvn clean
9   exit
10 fi
11
12 docker-compose -f docker/docker-compose.yml up -d --remove-orphans kafka-1 kafka-2 kafka-3
13 docker-compose -f docker/docker-compose.yml rm -svf producer producer-0 producer-1
14
15 if [[
16   $(docker image ls -q $IMAGE) == "" ||
17   "$1" = "build"
18 ]]
19 then
20   mvn clean install || exit
21 else
22   echo "Using image existing images:"
23   docker image ls $IMAGE
24 fi
25
26 echo "Waiting for the Kafka-Cluster to become ready..."
27 docker-compose -f docker/docker-compose.yml run --rm cli cub kafka-ready -b kafka:9092 3 60 > /dev/null 2>&1 || exit 1
28
29 docker-compose -f docker/docker-compose.yml up -t0 -d cli
30 sleep 1
31 docker-compose -f docker/docker-compose.yml logs setup
32
33 docker-compose -f docker/docker-compose.yml up -d producer
34 while ! [[ $(http 0:8080/actuator/health 2> /dev/null) =~ "UP" ]]; do echo "Waiting for producer..."; sleep 1; done
35
36 # tag::hashed[]
37 echo -n Nachricht 1 an klaus über producer | http -v :8080/klaus
38 # end::hashed[]
39 echo -n Nachricht 2 an klaus über producer | http -v :8080/klaus
40 # tag::hashed[]
41 echo -n Nachricht 1 an peter über producer | http -v :8080/peter
42 # end::hashed[]
43 echo -n Nachricht 3 an klaus über producer | http -v :8080/klaus
44 echo -n Nachricht 2 an peter über producer | http -v :8080/peter
45 echo -n Nachricht 3 an peter über producer | http -v :8080/peter
46
47 echo Nachrichten in Partition 0:
48 kafkacat -b :9092 -t test -o 0 -p0 -f'key: %k\toffset: %o\tvalue: %s\n' -qe
49 echo
50 echo Nachrichten in Partition 1:
51 kafkacat -b :9092 -t test -o 0 -p1 -f'key: %k\toffset: %o\tvalue: %s\n' -qe
52 echo
53
54 docker-compose -f docker/docker-compose.yml exec -T cli bash << 'EOF'
55 echo "Altering number of partitions from 2 to 3..."
56 kafka-topics --bootstrap-server kafka:9092 --describe --topic test
57 # tag::repartitioning[]
58 kafka-topics --bootstrap-server kafka:9092 --alter --topic test --partitions 3
59 # end::repartitioning[]
60 kafka-topics --bootstrap-server kafka:9092 --describe --topic test
61 EOF
62
63 docker-compose -f docker/docker-compose.yml restart producer
64 while ! [[ $(http 0:8080/actuator/health 2> /dev/null) =~ "UP" ]]; do echo "Waiting for producer..."; sleep 1; done
65
66 echo -n Nachricht 4 an klaus über producer | http -v :8080/klaus
67 echo -n Nachricht 5 an peter über producer | http -v :8080/peter
68 echo -n Nachricht 4 an peter über producer | http -v :8080/peter
69 echo -n Nachricht 5 an klaus über producer | http -v :8080/klaus
70 echo -n Nachricht 6 an klaus über producer | http -v :8080/klaus
71 echo -n Nachricht 6 an peter über producer | http -v :8080/peter
72
73 echo Nachrichten in Partition 0:
74 # tag::kafkacat[]
75 kafkacat -b :9092 -t test -o 0 -p0 -f'key: %k\toffset: %o\tvalue: %s\n' -qe
76 # end::kafkacat[]
77 echo
78 echo Nachrichten in Partition 1:
79 # tag::kafkacat[]
80 kafkacat -b :9092 -t test -o 0 -p1 -f'key: %k\toffset: %o\tvalue: %s\n' -qe
81 # end::kafkacat[]
82 echo
83 echo Nachrichten in Partition 2:
84 kafkacat -b :9092 -t test -o 0 -p2 -f'key: %k\toffset: %o\tvalue: %s\n' -qe
85
86
87 docker-compose -f docker/docker-compose.yml restart setup
88 sleep 1
89 docker-compose -f docker/docker-compose.yml up -d producer-0 producer-1
90 while ! [[ $(http 0:8000/actuator/health 2> /dev/null) =~ "UP" ]]; do echo "Waiting for producer-0..."; sleep 1; done
91 while ! [[ $(http 0:8001/actuator/health 2> /dev/null) =~ "UP" ]]; do echo "Waiting for producer-1..."; sleep 1; done
92
93 # tag::fixed[]
94 echo -n Nachricht 1 über producer-0 | http -v :8000/klaus
95 echo -n Nachricht 1 über producer-1 | http -v :8001/klaus
96 echo -n Nachricht 2 über producer-0 | http -v :8000/peter
97 echo -n Nachricht 2 über producer-1 | http -v :8001/peter
98 # end::fixed[]
99
100 docker-compose -f docker/docker-compose.yml exec -T cli bash << 'EOF'
101 echo "Altering number of partitions from 2 to 3..."
102 kafka-topics --bootstrap-server kafka:9092 --describe --topic test
103 kafka-topics --bootstrap-server kafka:9092 --alter --topic test --partitions 3
104 kafka-topics --bootstrap-server kafka:9092 --describe --topic test
105 EOF
106
107 docker-compose -f docker/docker-compose.yml restart producer-0 producer-1
108 while ! [[ $(http 0:8000/actuator/health 2> /dev/null) =~ "UP" ]]; do echo "Waiting for producer-0..."; sleep 1; done
109 while ! [[ $(http 0:8001/actuator/health 2> /dev/null) =~ "UP" ]]; do echo "Waiting for producer-1..."; sleep 1; done
110
111 echo -n Nachricht 3 über producer-0 | http -v :8000/klaus
112 echo -n Nachricht 3 über producer-1 | http -v :8001/klaus
113 echo -n Nachricht 4 über producer-0 | http -v :8000/peter
114 echo -n Nachricht 4 über producer-1 | http -v :8001/peter
115
116 echo Nachrichten in Partition 0:
117 kafkacat -b :9092 -t test -o 0 -p0 -f'key: %k\toffset: %o\tvalue: %s\n' -qe
118 echo
119 echo Nachrichten in Partition 1:
120 kafkacat -b :9092 -t test -o 0 -p1 -f'key: %k\toffset: %o\tvalue: %s\n' -qe
121 echo
122 echo Nachrichten in Partition 2:
123 kafkacat -b :9092 -t test -o 0 -p2 -f'key: %k\toffset: %o\tvalue: %s\n' -qe