榛铸线装饰

Hazelcast thread decoration

我们正在尝试用我们当前的日志 (MDC) 上下文修饰异步 Hazelcast 线程。 通常,Hazelcast 线程可能如下所示:hz._hzInstance_1_xxx.cached.thread-1]

这可能吗?

我们想做如下事情,这是我们如何在 Spring 中的 ThreadPoolTask​​Executor 中实现线程装饰:

    private static class MdcTaskDecorator implements TaskDecorator {

        @Override
        public Runnable decorate(Runnable runnable) {
            Map<String, String> contextMap = MDC.getCopyOfContextMap();
            return () -> {
                try {
                    if (contextMap != null) {
                        MDC.setContextMap(contextMap);
                    }
                    runnable.run();
                } finally {
                    MDC.clear();
                }
            };
        }
    }

我们通过将我们的线程 UUID 暂时附加到我们的 Hazelcast 映射条目来实现我们想要的。然后,我们使用条目中的 UUID 在 Hazelcast 的每个异步操作中重置 MDC 上下文。