Рассмотрите возможность обновления до Spring для Apache Kafka 2.3.1
.
Вот документ, как выполнить ваше требование: https://docs.spring.io/spring-kafka/docs/2.3.0.RELEASE/reference/html/#dead-letters
Начиная с версии 2.3, когда используетсявместе с ErrorHandlingDeserializer2
издатель (читается как DeadLetterPublishingRecoverer
) восстановит запись value()
в записи производителя недоставленных букв к исходному значению, которое не удалось десериализовать. Ранее value()
был нулевым, и пользовательский код должен был декодировать DeserializationException
из заголовков сообщений. Кроме того, вы можете предоставить издателю несколько KafkaTemplate
;это может понадобиться, например, если вы хотите опубликовать byte[]
из DeserializationException
, а также значения с использованием другого сериализатора из записей, которые были успешно десериализованы. Вот пример настройки издателя с KafkaTemplate
s, который использует сериализатор String и byte []:
Итак, я полагаю, что этот документ даже даст вам подсказку, как действовать в версии 2.2.x
.
Кстати, мы всегда рекомендуем обновить хотя бы до последней версии выпуска в поколении. В настоящее время это 2.2.10
: https://spring.io/projects/spring-kafka#learn