2011-07-15 9 views
3

メッセージが長期間処理されないように監視する必要があるキューがあります。 QSVCINT(1800000)は30分です。古いメッセージを持つ監視キュー

このイベントは、成功した取得操作がないか、指定された制限を超える間隔内でMQPUTコールが検出された場合にのみ発生します。 (30分)

この場合、キューは30分間隔でメッセージ(MQPUT)を継続的に受信しているため、サービス間隔の高さはトリガーされません。

メッセージの有効期限を確認してアラートを受け取る方法はありますか?

答えて

3

質問に答える前に、前提で少し誤解を再設定しましょう。 Queue Service Intervalは、PUTと空のキューの間の時間を測定します。GETは、キューを空にせず、次のGETを空にします。あなたがイベントメッセージを受け取っていない理由は、PUTアクティビティによるものではなく、というイベントを引き起こすGETアクティビティの欠如に対するです。つまり、キューに深度が設定されると、GETが発生するまで、QSVCINTVLイベントは発生しません。また、イベントはOKHIGHの間で切り替わりますので、HIGHを取得すると別のHIGHは得られませんが、最終的にOKが表示されるはずです。 OKイベントを受け取ると、GETの結果としてHIGHの状態が発生するまで別のイベントが発生しません。

プログラムはキューに10個のメッセージを入れ、もう1個は最初のメッセージを読み込んで死ぬとします。 PUTコールはイベントを生成しませんが、タイマーを開始します。現在空でない空のキューはデフォルトでOKのインターバル状態になるため、すぐに発生したと指定された最初のGETにイベントは発生しません。後続のGETコールがなかったので、タイマーは実行し続けますが、イベントは生成されません。新しいメッセージは到着し続けることができますが、GETの成功後30分以上経過したGETコールのこの時点でイベントが発生します。

QSVCINTVL(HIGH)イベントベースには、GETのアクティビティが30個以上のミニットになることを希望している場合、そのように動作しません。

まだ私と一緒ですか?すばらしいです!今すぐ答えに。

キューステータス(たとえば、DIS QS(QUEUE.NAME)コマンドを使用して)を表示すると、最後にGETの時刻と日付が表示されます。 DIS QL(QUEUE.NAME) CURDEPTHコマンドは、キューの深さを提供します。これらの2つのコマンドはスクリプトでrunmqscに発行することも、PCFコマンドを使用してコマンドサーバーに直接発行することもでき、GETの動作に関係なく、最後に成功したGETからの時間をダイレクトに照会することができますイベント。あなたが最初にそうならば、(おそらく私たちは空のキューにはGETコールがない場合は気にしないため)、キューが深さを持っていることを検証することができ、この方法を使用して

、それは最後のGET以来をされているどのくらい見ますたとえ消費しているプログラムが終了し、GETの呼び出しが行われていなくても、が呼び出されます。

希望に役立ちます。

+0

ありがとうございました..キュープロパティQSVCIEVがNONE状態になると、QSVCIEV(NONE)?プロパティーQSVCIEVのデフォルト値ですか? – Vignesh

+0

はい!そのプロパティは、イベントが生成されるかどうかを制御します。 NONEに設定すると、イベントメッセージは生成されません。また、このページに基づいてhttp://publib.boulder.ibm.com/infocenter/wmqv7/v7r0/topic/com.ibm.mq.csqzax.doc/mo10860_.htm私はあなたがHIGHイベントを得ることができると信じていますGETなし。 PUTまたはGETのいずれかのイベントを生成することができます。 OKイベントはGETを必要とするので、QSVCINTVLの後に発生するPUTがHIGHイベントを生成するのに十分であると仮定します。私はすぐにそれをテストする時間がありませんが、それは私がドキュメントから得るものです。 –