为什么使用DeadLetterPublishingRecoverer base64对DLT中的邮件进行编码

时间:2020-06-01 19:53:31

标签: apache-kafka spring-kafka

我已经配置了一个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编码格式,而不是纯字符串。

制作人 enter image description here DLT消费者 enter image description here

test message在DLT中的名称为dGVzdCBtZXNzYWdl

另一个令人困扰的问题是由于base64编码,请求大小增加了。
我希望邮件按照DLT中的原样发送。
您能提供指针吗?

1 个答案:

答案 0 :(得分:2)

显示您的生产者出厂配置。

也许您使用的是普通生产者工厂?

最好的猜测是您在那里使用的是JsonSerializer而不是ByteArraySerializer

对于2.5版,您可以在每个KafkaTemplate中覆盖生产者工厂配置。