我有一个Spring Cloud Stream(SCS)Kafka 生产环境 应用程序配置了Sleuth用于跟踪 . 我正在尝试发布需要通过以下方式消费的弹出消息“GenericMessage”(即MessageHeaders有效负载):
-
SCS消费者(谁应该继续自动添加到MessageHeaders的跟踪)
-
非SCS / Java消费者,他们应该跳过MessageHeaders并处理有效负载 .
使用headerMode = embeddedHeaders(默认值):MessageHeader中的跟踪条目在发布之前由EmbeddedHeaderUtils预先添加到消息中 . 我的非java消费者可以't handle this as EmbeddedHeaderUtils doesn' t序列化为纯JSON,即
?\n invalid-json-headers { payload }
使用headerMode = raw:根本不发送MessageHeaders,只序列化有效负载 . 即 { payload }
我真的只想在创建时发布整个GenericMessage,包括Sleuth添加的跟踪 Span ID,即:
{"headers": {"id": "x", "trace": "y", "span": "z"}, "payload": { ... }}
有没有办法实现这一目标,除了发布SCS消费者的一个主题,另一个只有有效负载?
1 回答
因此,将该消息发布为出站消息的
payload
:这样,您的消息将被序列化为
payload
,并且您可以在正确的反序列化之后访问所需的标头并将payload
转换为Message
.