我们已经实现了一个应用程序来生成消息和标头,并将其发送到kafka主题。消费者方应用程序正在收听该kafka主题。消费者方应用程序可以接收有效载荷,但不接收标头。为了禁止将标头(包括contentType)嵌入有效负载,我们使用了
spring.cloud.stream.bindings.output.producer.headerMode =原始 spring.cloud.stream.bindings.input.consumer.headerMode =原始
但是我们不能在用户端应用程序中接收标头。我们如何接收这些标头? 我们正在将 spring-cloud-starter-stream-kafka 依赖项与版本 2.0.1.RELEASE
一起使用生产者属性:
spring:
cloud:
stream:
kafka:
binder:
headers: custom-header, source-timestamp
configuration:
key:
deserializer: org.apache.kafka.common.serialization.StringDeserializer
serializer: org.apache.kafka.common.serialization.StringSerializer
value:
deserializer: org.apache.kafka.common.serialization.StringDeserializer
serializer: org.apache.kafka.common.serialization.StringSerializer
bindings:
output:
destination: customDestination
contentType: application/json
producer:
headerMode: raw
消费者属性:
spring:
cloud:
stream:
kafka:
binder:
headers: axon-message-type, source-timestamp
configuration:
key:
deserializer: org.apache.kafka.common.serialization.StringDeserializer
value:
deserializer: org.apache.kafka.common.serialization.StringDeserializer
bindings:
input:
destination: customDestination
content-type: application/json
consumer:
headerMode: raw
答案 0 :(得分:0)
HeaderMode.raw
表示不发送标题;不推荐使用none
。
现在默认值为HeaderMode.headers
,因此请删除标题模式或使用headers
。