我正在尝试为我的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
被调用
答案 0 :(得分:0)
仅当使用template.send(Message<?>)
时才使用模板消息转换器,而出站通道适配器未使用此消息。
出站适配器使用其标头映射器映射标头本身;没有对消息有效负载执行任何转换。
哪些文档使您相信此上下文中使用了转换器?