6

我有一个使用多个 JMS 队列的应用程序。该应用程序的问题是它几乎没有创建任何日志。我想避免停止应用程序,更新源并再次启动它(但是,如果没有其他方法可以做到这一点,我将被迫这样做)。应用程序在远程服务器上运行,所以远程调试只是因为消息的数量而痛苦。

我在想,是否有办法在不中断应用程序流程的情况下查看队列中消息的内容。到目前为止,我一直在尝试使用 jboss-cli 来做到这一点。首先,我使用命令暂停了队列处理:

/subsystem=messaging-activemq/server=default/jms-queue=myQueues.input:pause

之后,我获得了队列的内容:

/subsystem=messaging-activemq/server=default/jms-queue=myQueues.input:list-messages

得到以下输出:

{
"outcome" => "success",
"result" => [{
    "JMSPriority" => 3,
    "JMSMessageID" => "ID:d50aef44-edcc-441c-818c-7d97200926cf",
    "someOfMyKeys" => "someOfMyValues",
    "JMSExpiration" => 1487255104511L,
    "__AMQ_CID" => "ecdec0e2-b7c1-4d2e-b55b-317c38023b1b",
    "JMSTimestamp" => 1487255094511L,
    "JMSDeliveryMode" => "NON_PERSISTENT"
}]

}

毕竟,我已经恢复了队列:

/subsystem=messaging-activemq/server=default/jms-queue=myQueues.input:resume

然而,这并没有返回消息的实际内容。如果我能以字节格式获取内容(类似于 tcpdump 输出)就足够了。

有没有办法实现它,或者我必须使用我之前提到的方法(远程调试/应用程序源更改)?

4

0 回答 0