`JsonDeserializer` ohne `ErrorHandlingDeserializer`
authorKai Moritz <kai@juplo.de>
Sun, 11 Sep 2022 20:12:26 +0000 (22:12 +0200)
committerKai Moritz <kai@juplo.de>
Fri, 16 Sep 2022 16:09:23 +0000 (18:09 +0200)
* Der `ErrorHandlingDeserializer` wird nicht nur benötigt, um die
  Informationen aufzuzeichnen, auf deren Basis der
  `DeadLetterPublishingRecoverer` die fehlgeschlagenen Nachrichten für
  das Dead-Letter-Topic serialisiert.
* Er sorgt auch dafür, das ein Fehler nur einmal aufschlägt.
* Ohne den `ErrorHandlingDeserializer` gerät die Anwendung daher in
  eine Endlosschleife, wenn eine Poison-Pill auf den `JsonDeserializer`
  trifft, und kommt aus dieser auch durch einen Neustart nicht mehr
  heraus!

src/main/resources/application.yml

index 488fcda..0261188 100644 (file)
@@ -24,11 +24,10 @@ spring:
     consumer:
       group-id: my-group
       key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
-      value-deserializer: org.springframework.kafka.support.serializer.ErrorHandlingDeserializer
+      value-deserializer: org.springframework.kafka.support.serializer.JsonDeserializer
       properties:
         partition.assignment.strategy: org.apache.kafka.clients.consumer.StickyAssignor
         metadata.max.age.ms: 1000
-        spring.deserializer.value.delegate.class: org.springframework.kafka.support.serializer.JsonDeserializer
         spring.json.type.mapping: >
           ADD:de.juplo.kafka.MessageAddNumber,
           CALC:de.juplo.kafka.MessageCalculateSum