问题描述
我们使用SDC4J使用MDC在Spring Boot应用程序中向HTTP请求添加请求ID。
我们通过添加GenericFilterBean
来实现此目的,该拦截器将拦截请求,将其转换为HTTTP,然后将所需的信息写入MDC.put(...);
例如在使用crontrigger启动作业的QuartzJob上执行此操作的正确模式是什么?还是Spring Batch作业?
解决方法
我通过添加 JobExecutionListener
为 Spring Batch 解决了这个问题,类似于您使用 GenericFilterBean
为 HTTP 所做的。
在beforeJob()
你可以做MDC.put(...);
,在afterJob()
你可以做MDC.remove(...);
此外,我添加了一个 TaskDecorator
以在多线程作业的情况下将 DMC 从父线程复制到子线程。
您可以在此处找到更详细的代码答案: https://stackoverflow.com/a/68347374/6837191