spring云流支持jsonheader?(在body)

spring cloud stream support json header?(in the body)

我们所有的消费者应用程序都使用 spring-cloud-stream
但是我们的一个大生产者应用程序(遗留..)不能使用 spring-cloud-stream 因为 spring 引导版本是 1.4

我们尝试使用 kinesis 消息代理发送消息。
我们想通过 kinesis 发送自定义 headers,但 kinesis 不支持发送 headers 如您所知。
所以我们决定在body中发送一个header。

{
  "header": {
    ~~
  }
  "payload": {
    ~~
  }
}

但是spring-cloud-stream无法在body中收到header。
我们认为我们可以使用 embeddedHeaders 选项(在 spring-cloud-stream 中)在 body 中接收 header。

{channelName}:
    destination: local-event
    consumer:
        header-mode: embeddedHeaders

但是...它不起作用。

所以..有什么方法可以在 body 中接收 header 吗?
或者我们必须 select 换一种方式?

嵌入的 header 值是单独的 JSON 片段,但它们使用二进制格式编码到消息中 - 请参阅 EmbeddedHeaderUtils

Encodes requested headers into payload with format

0xff, n(1), [ [lenHdr(1), hdr, lenValue(4), value] ... ]. 

The 0xff indicates this new format; n is number of headers (max 255); for each header, the name length (1 byte) is followed by the name, followed by the value length (int) followed by the value (json).