Springify: DLQ für Poison Pills konfiguriert
authorKai Moritz <kai@juplo.de>
Sat, 23 Apr 2022 08:11:17 +0000 (10:11 +0200)
committerKai Moritz <kai@juplo.de>
Sun, 5 Jun 2022 12:14:42 +0000 (14:14 +0200)
commit37fce16f77b3833de727060137688ff176d9a577
treec80c7b981933ffdaeababc0ce7ea43795a3e7d12
parent48bc16c6173fc40d516934bd400614e605385908
Springify: DLQ für Poison Pills konfiguriert

* Den Producer so konfiguriert, dass er einenen `ByteArraySerializer`
  verwendet.
* Dafür wird der `DefaultErrorHandler` explizit konfiguriert und mit
  einem `DeadLetterPublishingRecoverer` konfiguriert.
* Der `DefaultErrorHandler` ist mit einer `FixedBackOff`-Strategie
  konfiguriert, die die Nachricht direkt nach dem ersten Fehler auf
  das DLQ-Topic umleitet.
* Damit der Producer die als `byte[]` übergebene fehlerhafte Nachricht
  serialisieren kann, wurde er mit einem `ByteArraySerializer`
  konfiguriert.
* *TODO:* Auch Exceptions, die in dem `MessageListener` also dem
  `EndlessConsumer` geworfen werden, werden von dem im
  `DefaultErrorHandler` konfigurierten `DeadLetterPublishingRecoverer`
  in die DLQ geschickt, Problem dabei:
** Der Producer kann diese so wie hier konfiguriert noch nicht
   serialisieren.
** Für diese Fehler wäre aber auch eh eigentlich das Stop-World-Verhalten
   zu bevorzugen.
docker-compose.yml
src/main/java/de/juplo/kafka/ApplicationConfiguration.java
src/main/java/de/juplo/kafka/ApplicationErrorHandler.java [deleted file]
src/main/java/de/juplo/kafka/ApplicationHealthIndicator.java
src/main/java/de/juplo/kafka/ApplicationProperties.java
src/main/java/de/juplo/kafka/DriverController.java
src/main/java/de/juplo/kafka/EndlessConsumer.java
src/main/resources/application.yml
src/test/java/de/juplo/kafka/ApplicationTests.java