Мы реализовали одно приложение для создания сообщений плюс заголовки и отправки их в тему кафки.Приложение на стороне потребителя слушает эту тему кафки.Приложение на стороне потребителя может получать полезную нагрузку, но заголовки не принимаются. Ранее наши заголовки были получены в свойстве полезной нагрузки.Чтобы отключить встраивание заголовков (включая contentType) в полезную нагрузку, мы использовали
spring.cloud.stream.bindings.output.producer.headerMode = raw spring.cloud.stream.bindings.input.consumer.headerMode = raw
Но мы не можем получить заголовки в приложении на стороне потребителя.Как мы можем получить эти заголовки?Мы используем 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