#spring-boot #amazon-sqs #amazon-sns #distributed-tracing
Вопрос:
У меня есть два микросервиса, которые интегрированы вместе с SNS и SQS. Сообщение успешно передается между ними, но весенний сыщик генерирует новое traceId
во втором. Таким образом, невозможно обеспечить сквозную видимость и отслеживание запроса.
Конфигурация сыщика в обоих приложениях (каждое приложение имеет другое имя):
spring:
application:
name: BookingApp
sleuth:
sampler:
probability: 1
messaging:
enabled: true
zipkin:
base-url: http://localhost:9411/
Код издателя:
@Override
public void publish(Booking booking) {
LOGGER.info("Publishing Booking: Booking id: [{}], status [{}]",booking.getId(), booking.getBookingStatus());
notificationMessagingTemplate.convertAndSend(booking);
}
Код прослушивателя:
@SqsListener(value = "${create-booking}", deletionPolicy = ON_SUCCESS)
public void listen(@Valid @NotificationMessage Booking booking) {
LOGGER.info("Booking received: Booking id: [{}], status [{}]",booking.getId(), booking.getBookingStatus());
//...
}
Ответ №1:
Используйте приложение Wireshark, чтобы просмотреть заголовок traceId сообщения amqp на сетевом уровне. Я предполагаю, что заголовок идентификатора трассировки не будет отправлен от издателя сообщений.