gpt4 book ai didi

java - 在多个组件中记录全局 ID

转载 作者:行者123 更新时间:2023-12-04 07:02:03 25 4
gpt4 key购买 nike

我有一个系统,其中包含使用 JMS 和 Spring Integration 连接在一起的多个应用程序。消息沿着一系列应用程序发送。

[应用程序 A] -> [应用程序 B] -> [应用程序 C]

我们在消息头中设置了一个全局 id,以便我们可以通过系统跟踪每个消息生命周期。

我希望能够使用消息全局 ID 在系统中添加任何日志消息。

有没有其他人这样做过?有什么方法可以将此变量与 Thread 相关联,以便我可以在以后的方法中访问它?我宁愿不在系统的方法中传递变量。

最佳答案

我认为 ThreadLocal 可能是您想要的,尽管有些人可能会发现这种方法滥用了 ThreadLocal 的目的或良好的设计。就像是:

public class MyIDManager {
public static final ThreadLocal<Long> myID = new ThreadLocal<Long>();
}

...
// set ID at some point
MyIDManager.myID.set(theNewID);

...
// read it later
long currentID = MyIDManager.get();

这里的神奇之处在于 myID 的值实际上是特定于一个线程的,从不同的线程访问时会有所不同。

然后,您可以对 ID 执行您喜欢的操作,包括记录它。

关于java - 在多个组件中记录全局 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1701493/

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