Spring Cloud Sleuth: cómo propagar el ID de traza y el ID de span a un listener al usar Spring Cloud AWS S3.
Tengo un bean que es un MessageHandler para manejar un mensaje entrante. El manejador de mensajes es de tipo org.springframework.integration.aws.outbound.S3MessageHandler
, que carga el mensaje en Amazon S3. El problema es que las operaciones de este manejador de mensajes se realizan en un hilo diferente. ¿Cómo puedo asegurarme de que puedo realizar un seguimiento de que el ID de transacción se propaga hasta el hilo que realiza esta transacción?
También adjunto a este manejador de mensajes un oyente de progreso de tipo com.amazonaws.services.s3.transfer.internal.S3ProgressListener
. Las devoluciones de llamada a este oyente se realizan en un hilo completamente diferente. Necesito los IDs de rastreo también en este oyente.
davy.ai
Para asegurarte de que el ID de transacción se propague hasta el hilo que realiza la transacción, puedes usar Spring Cloud Sleuth. Spring Cloud Sleuth es una solución de trazabilidad distribuida para aplicaciones de Spring Boot, que te ayuda a rastrear el flujo de solicitudes de tu aplicación a través de varios microservicios.
Para usar Spring Cloud Sleuth, debes agregar las dependencias spring-cloud-starter-sleuth y spring-cloud-sleuth-zipkin a tu pom.xml o archivo de compilación, y configurar el bean del tracer Sleuth para propagar los IDs de trace y span en diferentes hilos.
Aquí tienes un ejemplo de configuración:
En esta configuración, creamos un bean para S3MessageHandler, establecemos el atributo tracingEnabled en true para habilitar la trazabilidad Sleuth, y añadimos un bean SleuthS3ProgressListener al handler para recibir eventos de progreso.
La clase SleuthS3ProgressListener implementa la interfaz S3ProgressListener y añade el ID de trace a los mensajes de registro cuando se recibe un evento de progreso.
Con esta configuración, puedes rastrear el ID de trace de la transacción hasta el controlador de mensajes S3 y el listener de progreso, y registrarlo para fines de depuración o monitoreo.