Как использовать ErrorHandlingDeserializer2 для обработки исключений во время десериализации - PullRequest
0 голосов
/ 30 октября 2019

Я использую spring-kafka - 2.2.7.RELEASE и пытаюсь понять, как я могу настроить ErrorHandlingDeserializer2 для обработки исключений во время десериализации и записи / отправки их DLT. Я устанавливаю свои потребительские конфиги в соответствии с приведенной ниже документацией https://docs.spring.io/spring-kafka/docs/2.2.0.RELEASE/reference/html/_reference.html#error-handling-deserializer.

Здесь мой вопрос: как нам получить исключение и запись о потребителе, которая не удалась во время десериализации?

1 Ответ

0 голосов
/ 30 октября 2019

Рассмотрите возможность обновления до 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

...