Заголовки не получены в приложении на стороне потребителя, использующем kafka в качестве промежуточного программного обеспечения между производителем и потребителем - PullRequest
0 голосов
/ 08 мая 2019

Мы реализовали одно приложение для создания сообщений плюс заголовки и отправки их в тему кафки.Приложение на стороне потребителя слушает эту тему кафки.Приложение на стороне потребителя может получать полезную нагрузку, но заголовки не принимаются. Ранее наши заголовки были получены в свойстве полезной нагрузки.Чтобы отключить встраивание заголовков (включая 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

1 Ответ

0 голосов
/ 08 мая 2019

HeaderMode.raw означает отправлять без заголовков;он устарел в пользу none.

. По умолчанию теперь используется значение HeaderMode.headers, поэтому либо удалите режим заголовка, либо используйте headers.

.
...