Vereinfachtes setup aus Grundlagen-Übungen übernommen
[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 docker-compose -f docker/docker-compose.yml up --remove-orphans setup || exit 1
27
28 docker-compose -f docker/docker-compose.yml up -t0 -d cli
29 sleep 1
30 docker-compose -f docker/docker-compose.yml logs setup
31
32 docker-compose -f docker/docker-compose.yml up -d producer
33 while ! [[ $(http 0:8080/actuator/health 2> /dev/null) =~ "UP" ]]; do echo "Waiting for producer..."; sleep 1; done
34
35 # tag::hashed[]
36 echo -n Nachricht 1 an klaus über producer | http -v :8080/klaus
37 # end::hashed[]
38 echo -n Nachricht 2 an klaus über producer | http -v :8080/klaus
39 # tag::hashed[]
40 echo -n Nachricht 1 an peter über producer | http -v :8080/peter
41 # end::hashed[]
42 echo -n Nachricht 3 an klaus über producer | http -v :8080/klaus
43 echo -n Nachricht 2 an peter über producer | http -v :8080/peter
44 echo -n Nachricht 3 an peter über producer | http -v :8080/peter
45
46 echo Nachrichten in Partition 0:
47 kafkacat -b :9092 -t test -o 0 -p0 -f'key: %k\toffset: %o\tvalue: %s\n' -qe
48 echo
49 echo Nachrichten in Partition 1:
50 kafkacat -b :9092 -t test -o 0 -p1 -f'key: %k\toffset: %o\tvalue: %s\n' -qe
51 echo
52
53 docker-compose -f docker/docker-compose.yml exec -T cli bash << 'EOF'
54 echo "Altering number of partitions from 2 to 3..."
55 kafka-topics --bootstrap-server kafka:9092 --describe --topic test
56 # tag::repartitioning[]
57 kafka-topics --bootstrap-server kafka:9092 --alter --topic test --partitions 3
58 # end::repartitioning[]
59 kafka-topics --bootstrap-server kafka:9092 --describe --topic test
60 EOF
61
62 docker-compose -f docker/docker-compose.yml restart producer
63 while ! [[ $(http 0:8080/actuator/health 2> /dev/null) =~ "UP" ]]; do echo "Waiting for producer..."; sleep 1; done
64
65 echo -n Nachricht 4 an klaus über producer | http -v :8080/klaus
66 echo -n Nachricht 5 an peter über producer | http -v :8080/peter
67 echo -n Nachricht 4 an peter über producer | http -v :8080/peter
68 echo -n Nachricht 5 an klaus über producer | http -v :8080/klaus
69 echo -n Nachricht 6 an klaus über producer | http -v :8080/klaus
70 echo -n Nachricht 6 an peter über producer | http -v :8080/peter
71
72 echo Nachrichten in Partition 0:
73 # tag::kafkacat[]
74 kafkacat -b :9092 -t test -o 0 -p0 -f'key: %k\toffset: %o\tvalue: %s\n' -qe
75 # end::kafkacat[]
76 echo
77 echo Nachrichten in Partition 1:
78 # tag::kafkacat[]
79 kafkacat -b :9092 -t test -o 0 -p1 -f'key: %k\toffset: %o\tvalue: %s\n' -qe
80 # end::kafkacat[]
81 echo
82 echo Nachrichten in Partition 2:
83 kafkacat -b :9092 -t test -o 0 -p2 -f'key: %k\toffset: %o\tvalue: %s\n' -qe
84
85
86 docker-compose -f docker/docker-compose.yml restart setup
87 sleep 1
88 docker-compose -f docker/docker-compose.yml up -d producer-0 producer-1
89 while ! [[ $(http 0:8000/actuator/health 2> /dev/null) =~ "UP" ]]; do echo "Waiting for producer-0..."; sleep 1; done
90 while ! [[ $(http 0:8001/actuator/health 2> /dev/null) =~ "UP" ]]; do echo "Waiting for producer-1..."; sleep 1; done
91
92 # tag::fixed[]
93 echo -n Nachricht 1 über producer-0 | http -v :8000/klaus
94 echo -n Nachricht 1 über producer-1 | http -v :8001/klaus
95 echo -n Nachricht 2 über producer-0 | http -v :8000/peter
96 echo -n Nachricht 2 über producer-1 | http -v :8001/peter
97 # end::fixed[]
98
99 docker-compose -f docker/docker-compose.yml exec -T cli bash << 'EOF'
100 echo "Altering number of partitions from 2 to 3..."
101 kafka-topics --bootstrap-server kafka:9092 --describe --topic test
102 kafka-topics --bootstrap-server kafka:9092 --alter --topic test --partitions 3
103 kafka-topics --bootstrap-server kafka:9092 --describe --topic test
104 EOF
105
106 docker-compose -f docker/docker-compose.yml restart producer-0 producer-1
107 while ! [[ $(http 0:8000/actuator/health 2> /dev/null) =~ "UP" ]]; do echo "Waiting for producer-0..."; sleep 1; done
108 while ! [[ $(http 0:8001/actuator/health 2> /dev/null) =~ "UP" ]]; do echo "Waiting for producer-1..."; sleep 1; done
109
110 echo -n Nachricht 3 über producer-0 | http -v :8000/klaus
111 echo -n Nachricht 3 über producer-1 | http -v :8001/klaus
112 echo -n Nachricht 4 über producer-0 | http -v :8000/peter
113 echo -n Nachricht 4 über producer-1 | http -v :8001/peter
114
115 echo Nachrichten in Partition 0:
116 kafkacat -b :9092 -t test -o 0 -p0 -f'key: %k\toffset: %o\tvalue: %s\n' -qe
117 echo
118 echo Nachrichten in Partition 1:
119 kafkacat -b :9092 -t test -o 0 -p1 -f'key: %k\toffset: %o\tvalue: %s\n' -qe
120 echo
121 echo Nachrichten in Partition 2:
122 kafkacat -b :9092 -t test -o 0 -p2 -f'key: %k\toffset: %o\tvalue: %s\n' -qe