Spring-Integration-Kafka: KafkaTemplate # setMessageConverter (RecordMessageConverter) не имеет никакого эффекта - PullRequest
0 голосов
/ 21 декабря 2018

Я пытаюсь установить специальный конвертер сообщений для моего обработчика сообщений Spring Integration Kafka (да, я знаю, что могу предоставить конфигурации сериализатора - я пытаюсь сделать что-то немного другое).

Iиметь следующее:

@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 голосов
/ 21 декабря 2018

Преобразователь шаблонных сообщений используется только при использовании template.send(Message<?>), который не используется адаптером исходящего канала.

Исходящий адаптер сам сопоставляет заголовки, используя свое сопоставление заголовков;для полезной нагрузки сообщения не выполняется преобразование.

Какая документация дает основание полагать, что преобразователь используется в этом контексте?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...