README.sh führt das Verhalten bei einem Deserialierungs-Fehler vor sumup-adder--springified--default-error-handling--poison-pill
authorKai Moritz <kai@juplo.de>
Fri, 23 Sep 2022 08:06:34 +0000 (10:06 +0200)
committerKai Moritz <kai@juplo.de>
Fri, 23 Sep 2022 13:51:28 +0000 (15:51 +0200)
* Weil der Fehler vom `DefaultErrorHandler` als fatal klassifiziert wird,
  kommpt die von der Auto-Konfiguration erzeugte `+FixedBackOffStrategy+`
  nicht zum Zuge und es wird auch kein Seek über den Fehler durchgeführt.
* D.h., es werden hier _keine_ Retries und _kein_ Seek_ durchgeführt.
* Stattdessen wird direkt der konfigurierte `Recoverer` aufgerufen.
* Da der per Default konfigurierte `Recoverer` aber lediglich eine
  Log-Meldung mit dem Log-Level ERROR für die Nachricht erzeugt,
  landet die Anwendung dann in einer Endlos-Schleife, da die Offset-Position
  nicht "korrigiert" (will sagen: über den Fehler hinwegbewegt) wird.
* Hier kann dann der `+DeadLetterPublishingRecoverer+` konfiguriert werden,
  damit diese Fehler nicht nur gelogged, sondern als neue Nachrichten in
  das Dead-Letter-Topic geschrieben werden.

README.sh
docker-compose.yml

index a2d813d..3b820c8 100755 (executable)
--- a/README.sh
+++ b/README.sh
@@ -34,78 +34,58 @@ 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-1..."; sleep 1; done
 while ! [[ $(http 0:8082/actuator/health 2> /dev/null) =~ "UP" ]]; do echo "Waiting for requests-2..."; sleep 1; done
 
-docker-compose up -d peter klaus
+docker-compose up -d adder-1 adder-2
 
-docker-compose up -d adder-1
 while ! [[ $(http 0:8091/actuator/health 2> /dev/null) =~ "UP" ]]; do echo "Waiting for adder-1..."; sleep 1; done
-while [[ "$(http :8091/results | jq -r .)" == "{}" ]]; do echo "Waiting for some results to show up on adder-1..."; sleep 1; done
-http -v --pretty none -S :8091/results
-echo
-
-sleep 3
-echo "Resultate für adder-1"
-http -v --pretty none -S :8091/results
-echo
-
-echo "Resultate für peter von adder-1"
-http :8091/results/peter | jq .[].sum | uniq
-echo "Resultate für klaus von adder-1"
-http :8091/results/klaus | jq .[].sum | uniq
-
-
-docker-compose up -d adder-2
 while ! [[ $(http 0:8092/actuator/health 2> /dev/null) =~ "UP" ]]; do echo "Waiting for adder-2..."; sleep 1; done
+while [[ "$(http :8091/results | jq -r .)" == "{}" ]]; do echo "Waiting for some results to show up on adder-1..."; sleep 1; done
 while [[ "$(http :8092/results | jq -r .)" == "{}" ]]; do echo "Waiting for some results to show up on adder-2..."; sleep 1; done
-http -v --pretty none -S :8092/results
-echo
-
-sleep 3
-echo "Resultate für adder-2"
-http -v --pretty none -S :8092/results
-echo
-
-echo "Resultate für peter von adder-1"
-http :8091/results/peter | jq .[].sum | uniq
-echo "Resultate für klaus von adder-1"
-http :8091/results/klaus | jq .[].sum | uniq
 
-echo "Resultate für peter von adder-2"
-http :8092/results/peter | jq .[].sum | uniq
-echo "Resultate für klaus von adder-2"
-http :8092/results/klaus | jq .[].sum | uniq
-
-docker-compose stop adder-1
-until [ $(http --check-status :8092/results/peter 2> /dev/null) ]; do echo "Waiting for some results for peter to show up on adder-2..."; sleep 1; done
-until [ $(http --check-status :8092/results/klaus 2> /dev/null) ]; do echo "Waiting for some results for klaus to show up on adder-2..."; sleep 1; done
+echo 6 | http -v :8080/peter
+echo 6 | http -v :8080/klaus
 
+echo "Resultate für adder-1"
+http -v :8091/results
 echo "Resultate für adder-2"
-http -v --pretty none -S :8092/results
-echo
+http -v :8092/results
 
-echo "Resultate für peter von adder-2"
-http :8092/results/peter | jq .[].sum | uniq
-echo "Resultate für klaus von adder-2"
-http :8092/results/klaus | jq .[].sum | uniq
+echo "Writing poison pill into topic out..."
+# tag::poisonpill[]
+echo 'BOOM!' | kafkacat -P -b :9092 -t out
+# end::poisonpill[]
 
-docker-compose kill -s 9 adder-2
+sleep 5
+echo "Resultate & Status für adder-1"
+http -v :8091/results
+http -v :8091/actuator/health
+echo "Resultate & Status für adder-2"
+http -v :8092/results
+http -v :8092/actuator/health
+
+echo "Stopping adder-1 & adder-2"
+# tag::stop[]
+docker-compose stop adder-1 adder-2
+# end::stop[]
+
+docker-compose logs --tail=50 adder-1 adder-2
+
+echo "Restarting adder-1"
+# tag::start[]
 docker-compose start adder-1
-docker-compose kill -s 9 peter klaus
+# end::start[]
 while ! [[ $(http 0:8091/actuator/health 2> /dev/null) =~ "UP" ]]; do echo "Waiting for adder-1..."; sleep 1; done
-until [ $(http --check-status :8091/results/peter 2> /dev/null) ]; do echo "Waiting for some results for peter to show up on adder-1..."; sleep 1; done
-until [ $(http --check-status :8091/results/klaus 2> /dev/null) ]; do echo "Waiting for some results for klaus to show up on adder-1..."; sleep 1; done
-
-echo "Resultate für adder-1"
-http -v --pretty none -S :8091/results
-echo
-
-echo "Resultate für peter von adder-1"
-http :8091/results/peter | jq .[].sum | uniq
-echo "Resultate für klaus von adder-1"
-http :8091/results/klaus | jq .[].sum | uniq
+while [[ "$(http :8091/results | jq -r .)" == "{}" ]]; do echo "Waiting for some results to show up on adder-1..."; sleep 1; done
 
 sleep 5
+echo "Resultate & Status für adder-1"
+# tag::status[]
+http -v :8091/results
+http -v :8091/actuator/health
+# end::status[]
+
+docker-compose stop adder-1
+docker-compose logs --tail=50 adder-1
 
-echo "Resultate für peter von adder-1"
-http :8091/results/peter | jq .[].sum | uniq
-echo "Resultate für klaus von adder-1"
-http :8091/results/klaus | jq .[].sum | uniq
+# tag::dlt[]
+kafkacat -b :9092 -t out.DLT -f'p=%p|o=%o|%k=%s\n' -o 0 -e
+# end::dlt[]
index a3da553..b49ca87 100644 (file)
@@ -99,13 +99,13 @@ services:
     command: sleep infinity
 
   gateway:
-    image: juplo/sumup-gateway--springified:1.0-SNAPSHOT
+    image: juplo/sumup-gateway:1.0-SNAPSHOT
     ports:
       - 8080:8080
     environment:
       server.port: 8080
-      spring.kafka.bootstrap-servers: kafka:9092
-      spring.kafka.client-id: gateway
+      sumup.gateway.bootstrap-server: kafka:9092
+      sumup.gateway.client-id: gateway
       sumup.gateway.topic: in
 
   requests-1:
@@ -118,13 +118,14 @@ services:
       sumup.requests.client-id: requests-1
 
   requests-2:
-    image: juplo/sumup-requests-json:1.0-SNAPSHOT
+    image: juplo/sumup-requests-fehlerteufel:1.0-SNAPSHOT
     ports:
       - 8082:8080
     environment:
       server.port: 8080
       sumup.requests.bootstrap-server: kafka:9092
       sumup.requests.client-id: requests-2
+      sumup.requests.error-position: 6
 
   adder-1:
     image: juplo/sumup-adder-springified:1.0-SNAPSHOT