spring-cloud-sleuth 与 spring-amqp 集成

Posted

技术标签:

【中文标题】spring-cloud-sleuth 与 spring-amqp 集成【英文标题】:spring-cloud-sleuth integration with spring-amqp 【发布时间】:2016-11-23 12:13:17 【问题描述】:

我只是在使用spring-cloud-sleuth 迈出第一步,它适用于各种 http 调用。

现在我正在尝试涵盖消息传递部分。我看到spring-cloud-sleuth 与开箱即用的spring-integration 集成。我目前只使用spring-amqp。有没有办法让这个工作。有没有人有一些见解甚至代码示例?

【问题讨论】:

【参考方案1】:

目前我们仅通过 spring-integration 直接支持 AMQP。为了支持 AMQP,您必须确保发送的所有消息都设置了正确的标头,并且当您取回它们时,您必须获取这些标头并将它们放入本地上下文中。将 Span(跟踪)信息注入到消息中,例如在这里 -https://github.com/spring-cloud/spring-cloud-sleuth/blob/v1.3.5.RELEASE/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/messaging/MessagingSpanTextMapInjector.java,从消息中提取跟踪数据在这里 https://github.com/spring-cloud/spring-cloud-sleuth/blob/v1.3.5.RELEASE/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/messaging/MessagingSpanTextMapExtractor.java。在这种方法中,您可以将提取的 Span 设置到上下文 https://github.com/spring-cloud/spring-cloud-sleuth/blob/v1.3.5.RELEASE/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/messaging/TraceChannelInterceptor.java#L71

更新:

使用 Sleuth 2.0.x (Finchley release train) 如果你有一个 rabbit 模板类型的 bean,它应该可以开箱即用(参见 here)。不需要额外的代码。

【讨论】:

现在有支持吗?我正在使用spring-cloud-starter-bus-amqp 在 2.0.x 中,如果你有一个 rabbit 模板类型的 bean,它应该可以开箱即用 @MarcinGrzejszczak 提供的 github 链接已失效,您可以检查一下吗?

以上是关于spring-cloud-sleuth 与 spring-amqp 集成的主要内容,如果未能解决你的问题,请参考以下文章

spring-cloud-sleuth简单使用

将 spring-cloud-sleuth 添加到类路径时出现“上下文初始化”错误

低版本spring-cloud-sleuth的TraceableExecutorService一个坑,注意绕行

SpringCloud实战-Sleuth

spring cloud zipkin

Sleuth+Zipkin 服务链路追踪