Über `?error=1` kann ein Fehler den Nachrichtenstrom eingebettet werden errorhandling/rest-producer--json--fehlerteufel---2023-06-signal
authorKai Moritz <kai@juplo.de>
Sat, 19 Nov 2022 15:53:37 +0000 (16:53 +0100)
committerKai Moritz <kai@juplo.de>
Thu, 15 Jun 2023 22:40:46 +0000 (00:40 +0200)
README.sh
src/main/java/de/juplo/kafka/RestProducer.java

index 427eca3..9ed2751 100755 (executable)
--- a/README.sh
+++ b/README.sh
@@ -36,6 +36,10 @@ while ! [[ $(http 0:8080/actuator/health 2> /dev/null) =~ "UP" ]]; do echo "Wait
 
 echo -n 3 | http -v :8080/foo;
 
+# tag::logicerror[]
+echo 17 | http -v :8080/foo?error=1
+# end::logicerror[]
+
 # tag::kafkacat[]
 kafkacat -b :9092 -t test -o 0 -e -f 'p=%p|o=%o|k=%k|h=%h|v=%s\n'
 # end::kafkacat[]
index e68fe66..67b342a 100644 (file)
@@ -29,13 +29,15 @@ public class RestProducer
   public DeferredResult<ProduceResult> send(
       @PathVariable String key,
       @RequestHeader(name = "X-id", required = false) Long correlationId,
-      @RequestBody Integer number)
+      @RequestBody Integer number,
+      @RequestParam(required = false) boolean error)
   {
     ResultRecorder result = new ResultRecorder(number+1);
 
     for (int i = 1; i <= number; i++)
     {
-      send(key, new AddNumberMessage(number, i), correlationId, result);
+      int next = error && i == (number+1)/2 ? i * -1 : i;
+      send(key, new AddNumberMessage(number, next), correlationId, result);
     }
     send(key, new CalculateSumMessage(number), correlationId, result);