我想要做的实质上是How to use MDC with thread pools?所要求的,但是使用Netty。
我想要根据Channel
关联的MDC信息。 Netty有哪些选择?如果我需要手动重置MDC,我可以从一个地方连接哪些方法?
答案 0 :(得分:0)
在GitHub上查看mdedetrich/mdc-async-netty-eventloopgroup项目。基本上,你必须装饰EventLoopGroup.execute
@Override
public void execute(Runnable runnable) {
delegate.execute(new Runnable() {
@Override
public void run() {
Map<String, String> oldMdcContext = MDC.getCopyOfContextMap();
setContextMap(mdcContext);
try {
runnable.run();
} finally {
setContextMap(oldMdcContext);
}
}
});
}
private void setContextMap(Map<String, String> context) {
if (context == null) {
MDC.clear();
} else {
MDC.setContextMap(context);
}
}