繁体   English   中英

如何使用 Micrometer 配置 Spring Boot 3 和 Spring Stream(使用 RabbitMQ),在 Zipkin 中不分离跟踪 HTTP 和 MQ?

[英]How can I configure Spring Boot 3 with Micrometer and Spring Stream (with RabbitMQ) that does not separate trace HTTP and MQ in Zipkin?

我配置了一个基本的 Spring Boot with Micrometer 和 Spring Stream (with RabbitMQ)。 我想配置 traceId 可以通过 Spring Stream 传递到另一个服务中。

我知道当我使用 tryNextEmit 时它会丢失跟踪信息。 所以它会生成一个新的。 我也明白,RabbitMQ 消息得到一个“traceparent”header 和“00-xxxxxx-xxx-01”新值。

所以我的问题是:如何连接 Spring Stream 使用较旧跟踪信息和一条记录出现在 Zipkin 中的两条跟踪线?

示例代码: https://github.com/Numichi/stackoverflow-question-micrometer-with-stream

使用StreamBridge将消息发送到 Cloud Stream 绑定,而不是使用 Sink。 正如您所提到的,Sink 不允许 Observation Context 传播。 我不知道在使用允许传递父 Observation 的接收器时传播上下文的任何直接方法。

如果您使用streambridge.send将消息发送到 Stream 绑定,则发送到 rabbitMQ 的消息会按预期受到父观察,如下所示在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM