我有一个Spring Cloud Stream(SCS)Kafka制作app,配置了Sleuth用于跟踪。我试图发布一个Spring-messaging' GenericMessage' (即MessageHeaders +有效载荷)需要通过以下方式消费:
使用headerMode = embeddedHeaders(默认值): MessageHeader中的跟踪条目在发布之前由EmbeddedHeaderUtils预先添加到消息中。我的非Java消费者无法解决这个问题,因为EmbeddedHeaderUtils没有序列化为纯JSON,即
?\n invalid-json-headers { payload }
使用headerMode = raw:
根本不发送MessageHeaders,只有有效负载被序列化。
即
{ payload }
我真的只想在创建时发布整个GenericMessage,包括Sleuth添加的trace + span ID,即:
{"headers": {"id": "x", "trace": "y", "span": "z"}, "payload": { ... }}
除了为SCS消费者发布一个主题,还有另一个主题只有有效负载后,有没有办法实现这个目标?
答案 0 :(得分:1)
因此,将该消息发布为出站消息的antho@noctil: ~/.l/bin$ pwd
/home/antho/.local/bin
antho@noctil: ~/.l/bin$ ls pip*
pip pip2 pip2.7 pip3 pip3.5
:
payload
通过这种方式,您的邮件将被序列化为return MessageBuilder.withPayload(message).build();
,并且您可以在正确反序列化并将payload
投射到payload
后访问所需的标头。