spring-cloud-sleuth使用rabbitmq-binder通过spring-cloud-stream跟踪:如何完成Trace

时间:2018-03-20 20:33:54

标签: spring-cloud-stream zipkin spring-cloud-sleuth

我使用带有RabbitMQ-binders和spring-cloud-sleuth的spring-cloud-stream设置了一个演示项目。

dependencies {
    annotationProcessor "org.springframework.boot:spring-boot-configuration-processor" // for @ConfigurationProperties, make sure compileJava.dependsOn(processResources)
    compile 'org.springframework.boot:spring-boot-starter-security'
    compile 'org.springframework.boot:spring-boot-starter-actuator'
    compile 'org.springframework.cloud:spring-cloud-starter-config'
    compile 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
    compile 'org.springframework.cloud:spring-cloud-starter-sleuth'
    compile "org.springframework.boot:spring-boot-starter-web-services" // I also have some REST endpoints
    compile 'org.springframework.cloud:spring-cloud-stream-binder-rabbit'
}

我有一个预定的spring-cloud-stream源:

@Scheduled(fixedDelay = 2500, initialDelay = 500)
@HystrixCommand(fallbackMethod = "fallbackTimerMessageSource")
@SendTo(SourceChannels.OUTPUT)
public void timerMessageSource() {
     ...

然后是一个中间层,类似于最终的宿层,看起来像:

@Autowired
private Tracer sleuthTracer;


@StreamListener(SinkChannels.INPUT)
public void sinked(MessageDTO payload) {
    logger.info("[{}]sinked by {} with '{}'", instanceIndex, Sink.class.getSimpleName(), payload);
    ...

我很高兴看到TraceId和SpanId在所有进程中自动通过RabbitMQ队列传递到日志文件中的接收进程:

2018-03-20 20:55:10.580  INFO [circuitbreakers_sink,820fcab9830191c7,a388974ea57dac3a,true] 43379 --- [k27JdIWK8axsQ-1] c.d.minimal.circuitbreaker.sinks.Sink    : [0]sinked by Sink with 'Tue Mar 20 20:55:06 CET 2018 MESSAGE: 'fromSource transformed by tier1 transformed by tier2' modifiers: ' modBy:tier1:i0 modBy:tier2:i0''

所以在这一点上,最终的接收层希望(明确地)发出信号,这个跟踪(我的业务流程的实例)在这里被finish编辑。

我如何表示整个Trace已经完成?

我只找到sleuthTracer.currentSpan().finish();,但这只完成了Span ...没有明确表示,整个跟踪在这里完成。

我错过了什么吗? (拉链,勇敢和侦探很新)

1 个答案:

答案 0 :(得分:0)

拉链中没有任何痕迹整理的概念。跟踪中的跨度可以开始和结束。我们不会在不同的主机上启动和停止跨度,因此未完成的跨度可能是偶然的。如果您喜欢https://gitter.im/spring-cloud/spring-cloud-sleuth

,可以在此处聊天