複数の 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 の出力と同様)。
それを達成する方法はありますか、または以前に言及した方法 (リモート デバッグ/アプリ ソースの変更) を使用する必要がありますか?