代码之家  ›  专栏  ›  技术社区  ›  mainstringargs

跟踪JMS消息的来源

  •  1
  • mainstringargs  · 技术社区  · 14 年前

    在javax.jms.MessageAPI中是否有任何方法可以获取有关消息来自何处的信息(来自 onMessage(消息消息消息) 打电话?

    我正在处理一大块新代码,我可以看到消息是从哪里来的,但是找到消息从哪里来的堆栈的跟踪是非常有帮助的。

    我得到的线索是:

    java.lang.Exception: Stack trace
        at java.lang.Thread.dumpStack(Thread.java:1206)
        at aaa.switch.serverobjects.SVSBean.activateDevice(SVSBean.java:377)
        at aaa.serverobjects.DeviceControlAdapter.activate(DeviceControlAdapter.java:659)
        at aaa.voiceswitch.serverobjects.SVSBean.activate(SVSBean.java:352)
        at aaa.service.DeviceControlServiceJMSMessageListener$1.run(DeviceControlServiceJMSMessageListener.java:237)
        at java.lang.Thread.run(Thread.java:619)
    

    很明显,这只是回到了java.lang.thread,它并没有真正的帮助。

    2 回复  |  直到 14 年前
        1
  •  2
  •   AlexR    14 年前

    我同意这是不可能的,但我会这样做。 如果发送消息的代码被封装在一个类中(例如,类MyJMSSender),只需添加特殊的消息属性(例如,“stacktrace”)并将值放在其中

    Arrays.asList(new Throwable().getStackTrace()).replace(“,”,“\n”)

    您将能够在接收端打印此属性并知道消息来自何处。

        2
  •  2
  •   Robin    14 年前

    除非JMS实现嵌入到当前JVM中并有效地单线程。我不知道有什么实现是这样操作的,而且肯定是非典型的,因为JMS通常用于在应用程序之间传递消息。

    因为这是典型的情况,所以堆栈将限制在VM中的当前线程。我认为没有任何方法可以让堆栈包含来自其他应用程序(即JMS服务器和发送应用程序)的信息。

    推荐文章