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).
我们所有的消费者应用程序都使用 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).