spring-integration-kafka:KafkaTemplate#setMessageConverter(RecordMessageConverter)无效

时间:2018-12-21 19:35:09

标签: spring-integration spring-kafka

我正在尝试为我的Spring Integration Kafka消息处理程序设置一个自定义消息转换器(是的,我知道我可以提供序列化程序配置-我正在尝试做一些不同的事情)。

我有以下内容:

@Bean
public KafkaTemplate<String, String> kafkaTemplate() {
    final KafkaTemplate<String, String> kafkaTemplate = new KafkaTemplate<>(producerFactory());
    kafkaTemplate.setMessageConverter(new MessagingMessageConverter() {
        @Override
        public ProducerRecord<?, ?> fromMessage(final Message<?> message, final String s) {
            LOGGER.info("fromMessage({}, {})", message, s);
            return super.fromMessage(message, s);
        }
    });
    return kafkaTemplate;
}

@Bean
@ServiceActivator(inputChannel = "kafkaMessageChannel")
public MessageHandler kafkaMessageHandler() {
    final KafkaProducerMessageHandler<String, String> handler = new KafkaProducerMessageHandler<>(kafkaTemplate());
    handler.setTopicExpression(new LiteralExpression(getTopic()));
    handler.setSendSuccessChannel(kafkaSuccessChannel());
    return handler;
}

当消息发送到kafkaMessageChannel时,处理程序将其发送,结果显示在kafkaSuccessChannel中,但是我从未在模板中设置的RecordMessageConverter被调用

1 个答案:

答案 0 :(得分:0)

仅当使用template.send(Message<?>)时才使用模板消息转换器,而出站通道适配器未使用此消息。

出站适配器使用其标头映射器映射标头本身;没有对消息有效负载执行任何转换。

哪些文档使您相信此上下文中使用了转换器?