榛铸线装饰
Hazelcast thread decoration
我们正在尝试用我们当前的日志 (MDC) 上下文修饰异步 Hazelcast 线程。
通常,Hazelcast 线程可能如下所示:hz._hzInstance_1_xxx.cached.thread-1]
这可能吗?
我们想做如下事情,这是我们如何在 Spring 中的 ThreadPoolTaskExecutor 中实现线程装饰:
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 上下文。
我们正在尝试用我们当前的日志 (MDC) 上下文修饰异步 Hazelcast 线程。
通常,Hazelcast 线程可能如下所示:hz._hzInstance_1_xxx.cached.thread-1]
这可能吗?
我们想做如下事情,这是我们如何在 Spring 中的 ThreadPoolTaskExecutor 中实现线程装饰:
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 上下文。