У меня есть весенний сервис, который может отправить несколько пакетных заданий AWS.Это простое весеннее пакетное задание, которое вызывает запрос на внешнее обслуживание.И я хочу распространить трассировку, сгенерированную в моем сервисе, включив библиотеку «org.springframework.cloud:spring-cloud-starter-sleuth» в classpath, к этой работе и добавить перехватчик «TraceRestTemplateInterceptor» во внешний запрос, инициированный этим traceId.
Как я могу это сделать?Как я могу инициализировать перехватчик, который поместит существующий traceId из параметра приложения, среды, свойств?Или может потребоваться создать некоторые компоненты конфигурации?
ОБНОВЛЕНИЕ:
Упрощенный пример:
@SpringBootApplication
public class DemoApplication implements CommandLineRunner {
Logger logger = LoggerFactory.getLogger(DemoApplication.class);
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
//@Autowired
//RestTemplate restTemplate;
@Override
public void run(String... args) {
logger.info("Hello, world!");
//restTemplate.getForObject("some_url", String.class);
}
}
Файл application.properties:
x-b3-traceId=98519d97ce87553d
Файл build.gradle:
dependencies {
implementation('org.springframework.cloud:spring-cloud-starter-sleuth')
}
Вывод:
INFO [-,,,] 15048 --- [ main] com.example.demo.DemoApplication : Hello, world!
Прежде всего, я хочу увидеть здесь traceId, который инициализируется в application.properties.Во-вторых, когда раскомментируйте условие resttemplate, этот traceId распространяется в запрос.
Возможно ли это?