如何在Spring中配置React Scheduler?

时间:2018-11-07 16:36:54

标签: java spring project-reactor mdc

Here我找到了有关在任务之间“保存” MDC的示例:

Schedulers.setFactory(new Factory() {

            @Override
            public ScheduledExecutorService decorateExecutorService(String schedulerType,
                    Supplier<? extends ScheduledExecutorService> actual) {

                // guava WrappingScheduledExecutorService
                return new WrappingScheduledExecutorService(actual.get()) {

                    @Override
                    protected <T> Callable<T> wrapTask(Callable<T> callable) {
                        return new MDCCallable(callable);
                    }
                };
            }
        });

    static class MDCCallable<T> implements Callable<T> {
        private Map<String, String> ctxMap;
        private Callable<T> target;

        public MDCCallable(Callable<T> target) {
            this.target = target;
            ctxMap = MDC.getCopyOfContextMap();
        }

        @Override
        public T call() throws Exception {
            MDC.setContextMap(ctxMap);
            return target.call();
        }
    }

它通过静态setFactory调用来修改静态方法/字段,并且可以在main中运行。但是如何在spring环境中配置它呢? 好的,我使用@Configuration创建了一个类,但是下一步该怎么做? 创建一个@Bean返回的Factory方法?还是实现一个接口(确切地说是abd覆盖工厂创建)?

顺便说一句如何在应用程序启动期间安全地调用此方法?

建议。请随时在评论中提出其他问题。

0 个答案:

没有答案