在 Spring 云流消息 body 中找到嵌入式 headers
Embedded headers found in Spring Cloud Stream message body
我使用 Spring Cloud Stream 1.3.2.RELEASE 向 Kafka 发布 String 消息。当我使用命令行 Kafka 消费者或 Spring Kafka @KafkaListener
使用消息时,contentType header 总是附加到消息 body.
问题:
有什么方法可以摆脱嵌入的 header 吗?
--
Spring Cloud Stream 作为生产者
private void send() {
channel.test().send(MessageBuilder.withPayload("{\"foo\":\"bar\"}").build());
}
命令行 Kafka 消费者
$ bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test
�
contentType
"text/plain"{"foo":"bar"}
Spring Kafka 作为消费者
@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"}
参见 headerMode
绑定 属性:https://docs.spring.io/spring-cloud-stream/docs/Ditmars.SR3/reference/htmlsingle/#_properties_for_use_of_spring_cloud_stream。您需要将其设置为 raw
作为您发送消息的目的地。
我使用 Spring Cloud Stream 1.3.2.RELEASE 向 Kafka 发布 String 消息。当我使用命令行 Kafka 消费者或 Spring Kafka @KafkaListener
使用消息时,contentType header 总是附加到消息 body.
问题:
有什么方法可以摆脱嵌入的 header 吗?
--
Spring Cloud Stream 作为生产者
private void send() {
channel.test().send(MessageBuilder.withPayload("{\"foo\":\"bar\"}").build());
}
命令行 Kafka 消费者
$ bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test
�
contentType
"text/plain"{"foo":"bar"}
Spring Kafka 作为消费者
@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"}
参见 headerMode
绑定 属性:https://docs.spring.io/spring-cloud-stream/docs/Ditmars.SR3/reference/htmlsingle/#_properties_for_use_of_spring_cloud_stream。您需要将其设置为 raw
作为您发送消息的目的地。