2017-02-22 25 views
0

У меня есть 2 очень простых приложения с весенним облачным потоком. Service3, производитель сообщений, отправляет сообщения Service4, потребителю, через связующее-кафку.Не удалось проследить весенний облачный поток Слушатель с весенним туманом

И я использую весеннего облака, чтобы проследить промежутки между ними. Но только промежутки в Service3 доступны на сервере zipkin. Нет показов span для Service4.

  1. service3

    dependencies { 
    compile('org.springframework.boot:spring-boot-starter-web') 
    compile('org.springframework.boot:spring-boot-starter-thymeleaf') 
    
    compile('org.springframework.cloud:spring-cloud-starter-sleuth') 
    
    // Marshal spans over a Spring cloud stream binder 
    compile('org.springframework.cloud:spring-cloud-sleuth-stream') 
    compile('org.springframework.cloud:spring-cloud-stream-binder-kafka') 
    
    testCompile group: 'junit', name: 'junit', version: '4.11' 
    } 
    
    
    @SpringBootApplication 
    public class Service3 { 
        public static void main(String[] args) { 
         SpringApplication.run(Service3.class, args); 
        } 
    } 
    
    
    @Controller 
    @EnableBinding(Source.class) 
    public class WebController { 
    
        @Autowired 
        private Source source; 
    
    
        @GetMapping("/srv4") 
        private String getSrv4Info(){ 
         String msg = "Hello Service 4"; 
         this.source.output().send(MessageBuilder.withPayload(msg).build()); 
    
         return "srv4"; 
        } 
    } 
    
  2. Service4

    dependencies { 
        compile('org.springframework.boot:spring-boot-starter-web') 
    
        compile('org.springframework.cloud:spring-cloud-starter-sleuth') 
    
        // Marshal spans over a Spring cloud stream binder 
        compile('org.springframework.cloud:spring-cloud-sleuth-stream') 
        compile('org.springframework.cloud:spring-cloud-sleuth-zipkin-stream') 
        compile('org.springframework.cloud:spring-cloud-stream-binder-kafka') 
    
        runtime('io.zipkin.java:zipkin-autoconfigure-ui') 
    
        testCompile group: 'junit', name: 'junit', version: '4.11' 
    } 
    
    @SpringBootApplication 
    @EnableZipkinStreamServer 
    public class Service4 { 
        public static void main(String[] args) { 
         SpringApplication.run(Service4.class, args); 
        } 
    } 
    
    @EnableBinding(Sink.class) 
    public class MsgReceiver { 
        @StreamListener(Sink.INPUT) 
        private void listen(Message<String> msg){ 
         System.out.println(msg.getPayload()); 
        } 
    } 
    

Servic4 (message consumer) is not traced

Что я пропустил?

+0

Наконец, я нашел 2 вопросов, связанных с моими приложениями. 1. Приложение с @EnalbeZipkinStreamServer невозможно проследить. Это похоже на дизайн. – RocWay

+0

Да, это сделано по причине дизайна, мы не хотим отслеживать трассировщик –

ответ

0

Это предположение.

Kafka не имеет понятия заголовков сообщений (где хранятся интервалы).

SC SC поэтому должен вставлять заголовки сообщений в полезную нагрузку.

В текущей версии вам необходимо «выбрать», какие заголовки вы хотите транспортировать таким образом.

Documentation here.

spring.cloud.stream.kafka.binder.headers

Список пользовательских заголовков, которые будут транспортироваться связующем.

По умолчанию: пусто.

К сожалению, шаблоны в настоящее время не поддерживаются, вам необходимо указать заголовки отдельно. Мы имеем considering adding support for patterns и/или переносим все заголовки по умолчанию.

+0

Спасибо за ваши предложения. @ russell, вы правы. Я нашел проблему github, связанную с этим вопросом. https://github.com/spring-cloud/spring-cloud-sleuth/issues/282. – RocWay

+0

Сегодня я исправил, что все необходимые заголовки размножаются автоматически –

+0

Это будет очень полезно, экономя много времени на копирование. :) – RocWay

0

И наконец, я нашел 2 вопроса, связанных с моими приложениями. 1. Приложение с @EnalbeZipkinStreamServer невозможно проследить. Это похоже на дизайн. 2. Если Кафка используется в качестве связующего вещества, приложения должны быть указаны заголовки, как:

spring.cloud.stream.kafka.binder.headers[0]=spanId 
    spring.cloud.stream.kafka.binder.headers[1]=spanSampled 
    spring.cloud.stream.kafka.binder.headers[2]=spanProcessId 
    spring.cloud.stream.kafka.binder.headers[3]=spanParentSpanId 
    spring.cloud.stream.kafka.binder.headers[4]=spanTraceId 
    spring.cloud.stream.kafka.binder.headers[5]=spanName 
    spring.cloud.stream.kafka.binder.headers[6]=spanFlags 
+0

С изменениями, которые я сделал сегодня, больше не нужно –

 Смежные вопросы

  • Нет связанных вопросов^_^