为什么 DLT 中的消息使用 DeadLetterPublishingRecoverer base64 编码
Why are messages in DLT using DeadLetterPublishingRecoverer base64 encoded
我配置了一个 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
作为 dGVzdCBtZXNzYWdl
进入 DLT
另一个正在发生的问题是请求大小因 base64 编码而增加。
我希望消息按 DLT 中的原样发送。
能否指点一下。
显示您的生产者工厂配置。
也许您使用的是普通生产者工厂?
最好的猜测是你在那里使用 JsonSerializer
而不是 ByteArraySerializer
。
在 2.5 版中,您可以在每个 KafkaTemplate
中覆盖生产者工厂配置。
我配置了一个 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
作为 dGVzdCBtZXNzYWdl
另一个正在发生的问题是请求大小因 base64 编码而增加。
我希望消息按 DLT 中的原样发送。
能否指点一下。
显示您的生产者工厂配置。
也许您使用的是普通生产者工厂?
最好的猜测是你在那里使用 JsonSerializer
而不是 ByteArraySerializer
。
在 2.5 版中,您可以在每个 KafkaTemplate
中覆盖生产者工厂配置。