我的应用程序侦听队列中的消息,然后将结果发布到Tibco主题。我们编写了一个消息监听器,通过" onMessage" " MessageListener"
的方法我面临的问题是日志中的所有线程都显示相同的线程名称,即"TIBCO EMS Session Dispatcher (21367271)"
。而且很难跟踪哪个线程正在做什么。
我的log4j表达式是"%d{HH:mm:ss,SSS} %-5p %c{1} [%t] - %m%n"
。
我需要做些什么改变来获得正确的线程ID?
编辑:
我希望能够区分为处理不同消息而打印的日志消息。目前我不能用线程名做。
答案 0 :(得分:1)
您可以随意设置主题名称。你可以这样做:
private static AtomicInteger count = new AtomicInteger(0);
public void onMessage(Message message)
{
String oldName = Thread.currentThread().getName();
Thread.currentThread.setName("my-thread-" + count.getAndIncrement())
try
{
// ... existing code ...
}
finally
{
Thread.currentThread().setName(oldName);
}
}
用于唯一标识线程的原子整数的替代方法是使用标识哈希码:
Thread.currentThread.setName("my-thread-" + System.identityHashCode());