Compose-Setup und Vorführ-Skript an die Übung angepasst
authorKai Moritz <kai@juplo.de>
Fri, 19 Aug 2022 14:17:35 +0000 (16:17 +0200)
committerKai Moritz <kai@juplo.de>
Sat, 20 Aug 2022 14:02:38 +0000 (16:02 +0200)
* Die Mongo-DB muss vor dem Neu-Start gelöscht werden, da sie sonst noch
  den alten Zustand enthält.
* Außerdem muss der `adder`-Service dabei gestoppt sein, da er sonst den
  alten Zustand sofort neu anlegt, wenn die frisch erzeugte leere Mongo-DB
  erreichbar wird.
* Das Skript außerdem weniger, timing-anfällig gemacht, indem es wartet,
  bis der Zustand für den im Skript benutzten User sichtbar wird.
* Das Skript fasst das ausgegebene JSON außerdem mit `jq` und `uniq` so
  zusammen, dass sofort erkennbar ist, ob es zu falschen Berechnungen
  gekommen ist.
* Der im Skript benutzte User `peter` wartet jetzt zwischen den
  Berechnungs-Anfragen nicht mehr und stellt größere Anfragen, damit es
  sicherer zu falschen Berechnungen kommt -- (sonst kam es dazu, dass
  der Consumer eh die letzte Berechnung vollständig ausgeführt hatte und
  dann auf weitere Nachrichten gewartet und einen Commit gemacht hatte,
  bevor er abgeschossen wurde, so dass alle Berechnungen vollständig waren)
* Der Auto-Commit von Kafka wurde auf 3 Sekunden verkürzt, und das Skript
  an diese Zeit angepasst, so dass auf jeden Fall ein Commit erfolgt ist,
  bevor der Consumer getötet wird.

README.sh
docker-compose.yml

index 05178a3..e772144 100755 (executable)
--- a/README.sh
+++ b/README.sh
@@ -9,6 +9,8 @@ then
   exit
 fi
 
+docker-compose stop adder
+docker-compose rm -svf mongo
 docker-compose up -d zookeeper kafka-1 kafka-2 kafka-3 cli mongo express
 
 if [[
@@ -17,7 +19,7 @@ if [[
 ]]
 then
   docker-compose rm -svf adder
-  mvn clean install || exit
+  mvn -D skipTests clean install || exit
 else
   echo "Using image existing images:"
   docker image ls $IMAGE
@@ -32,15 +34,17 @@ while ! [[ $(http 0:8080/actuator/health 2> /dev/null) =~ "UP" ]]; do echo "Wait
 while ! [[ $(http 0:8081/actuator/health 2> /dev/null) =~ "UP" ]]; do echo "Waiting for requests..."; sleep 1; done
 while ! [[ $(http 0:8082/actuator/health 2> /dev/null) =~ "UP" ]]; do echo "Waiting for adder..."; sleep 1; done
 
-docker-compose up -d peter ute franz beate klaus uschi
+docker-compose up -d peter
 
+while [[ "$(http :8082/results | jq -r .)" == "{}" ]]; do echo "Waiting for some results to show up..."; done
 http -v :8082/results
 sleep 3
 http -v :8082/results
-
+http :8082/results/peter | jq .[].sum | uniq
 docker-compose kill -s 9 adder
 
 docker-compose up -d adder
-sleep 3
-docker-compose kill -s 9 peter ute franz beate klaus uschi
-http -v :8082/results
+docker-compose kill -s 9 peter
+while ! [[ $(http 0:8082/actuator/health 2> /dev/null) =~ "UP" ]]; do echo "Waiting for adder..."; sleep 1; done
+while [[ "$(http :8082/results | jq -r .)" == "{}" ]]; do echo "Waiting for some results to show up..."; sleep 1; done
+http :8082/results/peter | jq .[].sum | uniq
index ba2566e..0d61e12 100644 (file)
@@ -122,8 +122,10 @@ services:
       server.port: 8080
       sumup.adder.bootstrap-server: kafka:9092
       sumup.adder.client-id: adder
+      sumup.adder.commit-interval: 3s
       spring.data.mongodb.uri: mongodb://juplo:training@mongo:27017
       spring.data.mongodb.database: juplo
+      logging.level.org.apache.kafka.clients.consumer: DEBUG
 
   peter:
     image: juplo/toolbox
@@ -131,8 +133,7 @@ services:
       bash -c "
       while [[ true ]];
       do
-        echo 666 | http -v gateway:8080/peter;
-        sleep 1;
+        echo 6666 | http -v gateway:8080/peter;
       done
       "
   ute: