我们所有的消费者应用都使用 spring-cloud-stream
. 但是我们的一个大的生产者应用(传统的...)不能使用...。spring-cloud-stream
因为春秋版是 1.4
.
我们试图发送消息与 kinesis
消息代理。我们想通过 kinesis 发送自定义的头信息,但是 kinesis 不支持发送头信息。所以我们决定在 body
.
{
"header": {
~~
}
"payload": {
~~
}
}
但是... spring-cloud-stream
收不到头 body
. 我们认为我们可以收到一个头在 body
使用 embeddedHeaders
选项(在spring-cloud-stream中)。
{channelName}:
destination: local-event
consumer:
header-mode: embeddedHeaders
但是... ...它没有工作。
所以......有什么办法可以在 body
? 或者我们必须选择其他方式?
嵌入的头值是单独的JSON片段,但它们使用二进制格式编码到消息中--见 嵌入式头程序.
将请求的头编码到有效载荷中,格式为
0xff, n(1), [ [lenHdr(1), hdr, lenValue(4), value] ... ].
0xff表示这种新的格式;n是头的数量(最大255个);对于每个头,名字长度(1个字节)之后是名字,然后是值的长度(int),之后是值(json)。