我已经配置了一个errorHandler,它使用
将记录发送到DLT。@Bean
public DeadLetterPublishingRecoverer recoverer(KafkaTemplate<String, List<T>> template) {
return new DeadLetterPublishingRecoverer(template);
}
@Bean
public ErrorHandler errorHandler(DeadLetterPublishingRecoverer recoverer) {
return new SeekToCurrentErrorHandler(recoverer, new FixedBackOff(0L, 2L));
}
我正在使用此DLT捕获ErrorHandlingDeserializer2
处理的序列化错误
我面临的问题是DLT中的消息采用base64编码格式,而不是纯字符串。
test message
在DLT中的名称为dGVzdCBtZXNzYWdl
另一个令人困扰的问题是由于base64编码,请求大小增加了。
我希望邮件按照DLT中的原样发送。
您能提供指针吗?
答案 0 :(得分:2)
显示您的生产者出厂配置。
也许您使用的是普通生产者工厂?
最好的猜测是您在那里使用的是JsonSerializer
而不是ByteArraySerializer
。
对于2.5版,您可以在每个KafkaTemplate
中覆盖生产者工厂配置。