gpt4 book ai didi

java - 使用 MDC 或 Threadlocal

转载 作者:行者123 更新时间:2023-12-04 01:24:27 24 4
gpt4 key购买 nike

我要宣传 X-Request-Id使用 http 调用它们时,从我的 Nginx 接收到我的 k8s 中的其他服务。

现在,我正在使用请求过滤器来捕捉 X-Request-Id header 并将其放入 MDC。

        final String nginxRequestId = requestContext.getHeaderString("X-Request-Id");
if (nginxRequestId != null) {
MDC.put("infra_request", nginxRequestId);
}

现在,我正在 k8s 中调用服务 B 的端点(因此没有 Nginx),我想获得该 X-Request-Id将其放入请求的 header 中。我可以在这里看到两个选项:
  • 只需从 MDC 获取该值
  • 除了将它存储在 MDC
  • 之外,还将该 header 存储在线程局部变量中(因为该服务正在使用 Dropwizard)

    我可能会使用 MDC 来做到这一点,但我不确定这是否是最佳实践,或者是否可能存在一些问题/问题。

    最佳答案

    我认为为了您的目的,最好使用 MDC。 MDC 在内部使用 ThreadLocal。即使您使用 ThreadLocal,为了更好的实现方式,您也可以将 ThreadLocal 变量包装在一个类中。 MDC 为您做同样的事情。

    关于java - 使用 MDC 或 Threadlocal,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62147134/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com