IBM Websphere MQを使用しています。私はキューマネージャとキュー名を持っています。今、キューにメッセージがあるかどうかを確認したいのですが?キューにメッセージがあるかどうかを確認する方法
私はこれまでにこれを実行しませんでした。喜んでお問い合わせください
詳細情報が必要な場合はお知らせください。
おかげ
IBM Websphere MQを使用しています。私はキューマネージャとキュー名を持っています。今、キューにメッセージがあるかどうかを確認したいのですが?キューにメッセージがあるかどうかを確認する方法
私はこれまでにこれを実行しませんでした。喜んでお問い合わせください
詳細情報が必要な場合はお知らせください。
おかげ
次のコードは、.NET/amqmdnetである - しかし、あなたがしようとするとJavaのdevのはあなたのポストを見るまで、その間にこれを変換することがあります。
キューにメッセージがあるかどうかを確認するために、実際にキューをそれを取ることなく、キューが空の場合は、MQRC_NO_MSG_AVAILABLE
を取得します オプションとしてキューとIBM.WMQ.MQC.MQGMO_BROWSE_FIRST
にMQC.MQOO_BROWSE
を使用しています。
MQQueueManager queueManager = null;
MQQueue queue = null;
MQMessage queueMessage = new MQMessage();
queueManager = new MQQueueManager(qmName, channelName, connName);
queue = queueManager.AccessQueue(qName,
MQC.MQOO_BROWSE + MQC.MQOO_FAIL_IF_QUIESCING);
MQGetMessageOptions opt = new MQGetMessageOptions();
opt.Options = IBM.WMQ.MQC.MQGMO_BROWSE_FIRST;
queueMessage.CorrelationId = IBM.WMQ.MQC.MQMI_NONE;
queueMessage.MessageId = IBM.WMQ.MQC.MQMI_NONE;
queue.Get(queueMessage, opt);
String sMessage = queueMessage.ReadString(queueMessage.DataLength);
IBM.WMQ.MQC.MQGMO_BROWSE_NEXT
を参照してください。
キューからメッセージを実際に読み取るには、AccessQueueでMQC.MQOO_INPUT_SHARED
を使用します。
'MQINQ'を使用して、' MQIA_CURRENT_Q_DEPTH'整数属性を要求することもできます。メリットは 'MQGET'と' MQINQ'でセキュリティを違うように設定できることです。これにより、監視ユーザーはキューの属性にアクセスできますが、参照または取得することは必ずしも許可されません。 – Stavr00
答えは、MQRC_NO_MSG_AVAILABLEを確認する方法を示していませんでした。ここに私の解決策があります。より良いものがあれば教えてください。
try
{
queue.Get(queueMessage, opt);
String sMessage = queueMessage.ReadString(queueMessage.DataLength);
}
catch (MQException err)
{
if (err.ReasonCode.CompareTo(MQC.MQRC_NO_MSG_AVAILABLE) == 0)
return true;
}
Windowsマシンの場合 キューマネージャの場所によって異なります。
あなたはMQUtilitiesを使用することができます - ih03パック - ローカルQMについてはrfhUtil.exe(ローカルQM)とrfhUtilC.exe(リモートQM用)
を持っている、それはあなたが適切な値とヒットを配置する必要がまっすぐですブラウズすると、Queue Depthが表示されます。
リモートQMの場合は、キューマネージャ名とキュー名のキューにはPlace/TCP /(PortNo)を指定します。ブラウズを押すとキューの深さを知ることができます。
Unix/Ubuntu/Linux版の場合 - これに似たMQVisualEditという製品があります。
開発プラットフォームはどれですか? Java、C#etc – StuartLC
Java上の申し訳ありません –