В теле сообщения Spring Cloud Stream обнаружены встроенные заголовки - PullRequest
0 голосов
/ 16 мая 2018

Я использую Spring Cloud Stream 1.3.2.RELEASE , чтобы опубликовать строковое сообщение для Кафки. Когда я принимаю сообщение с помощью командной строки Kafka consumer или Spring Kafka @KafkaListener, заголовок contentType всегда добавляется к телу сообщения.

Вопрос

Есть ли способ избавиться от встроенных заголовков?

-

Spring Cloud Stream от производителя

private void send() {
    channel.test().send(MessageBuilder.withPayload("{\"foo\":\"bar\"}").build());
}

Командная строка Кафка потребителя

$ bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test
�
 contentType
            "text/plain"{"foo":"bar"}

Пружина Кафка как потребительская

@KafkaListener(topics = "test")
public void receive(Message message){
    log.info("Message payload received: {}", message.getPayload());
}

2018-05-16 07:12:05.241  INFO 19475 --- [ntainer#0-0-C-1] com.demo.service.Listener  : Message payload received: �contentType"text/plain"{"foo":"bar"}

@KafkaListener(topics = "test")
public void receive(@Payload String message){
    log.info("Message payload received: {}", message);
}

2018-05-16 07:16:14.313  INFO 19747 --- [ntainer#0-0-C-1] com.demo.service.Listener  : Message payload received: �contentType"text/plain"{"foo":"bar"}

1 Ответ

0 голосов
/ 16 мая 2018

См. headerMode свойство привязки: https://docs.spring.io/spring-cloud-stream/docs/Ditmars.SR3/reference/htmlsingle/#_properties_for_use_of_spring_cloud_stream. Вам необходимо установить значение raw для получателя, которому вы отправляете сообщения.

...