我有一个使用多个 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 输出)就足够了。
有没有办法实现它,或者我必须使用我之前提到的方法(远程调试/应用程序源更改)?