При использовании zipkin + kafka потеряно инструментарий сообщений Spring Stream Stream. - PullRequest
0 голосов
/ 11 июня 2018

У меня есть следующие настройки:

  • несколько сервисов Spring Cloud Edgware с наиболее заметными зависимостями spring-cloud-starter-zipkin и spring-cloud-stream-binder-kafka.
  • сервер Zipkin, работающий на openzipkin/zipkin:2.8docker image
  • Я вижу следы от сервиса, идущие в тему "zipkin", zipkin выбирает эти следы, и я могу просмотреть их в пользовательском интерфейсе zipkin.
  • с первого взгляда все выглядит нормально, особенно для вызова покой между моими службами, но я только что увидел, что он не работает для моих собственных сообщений, которые я использую для асинхронной связи между моими службами (я использую весенний облачный потокдля этого).
  • Я вижу сообщения журнала от TraceChannelInterceptor, указывающие, что инструментарий имеет место
  • , но заголовки сообщения трассировки отсутствуют в сообщении, когда я проверяю данные вkafka.

Раньше был StreamEnvironmentPostProcessor, который делал добавление заголовков трассировки к привязкам kafka, когда в прошлом я включал зависимость spring-cloud-sleuth-stream. Но в документе теперь четко указано :

Примечание: spring-cloud-sleuth-stream устарела и несовместима с этими пунктами назначения

Что я долженсделать, чтобы это работало правильно сейчас?Добавить заголовки в конфигурацию привязок самостоятельно?Или мне чего-то не хватает?

1 Ответ

0 голосов
/ 11 июня 2018

Это была ошибка в Spring Cloud Sleuth в Edgware.Stream Kafka Binder в Edgware требовал явной передачи заголовков, которые должны распространяться.Побочным эффектом добавления sleuth-stream на путь к классам была именно эта особенность.Устраняя проблему https://github.com/spring-cloud/spring-cloud-sleuth/issues/1005, мы добавляем недостающую функцию в ядро.Это не перенесено в Finchley, поскольку Stream Kafka Binder в Finchley по умолчанию пропускает все заголовки.

Обходной путь для Edgware - передать список заголовков следующим образом:

spring:
  cloud:
    stream:
      kafka:
        binder:
          headers:
            - spanId
            - spanSampled
            - spanProcessId
            - spanParentSpanId
            - spanTraceId
            - spanName
            - messageSent
...