IBMキュー・マネージャーが切断されたときに通知を受信するには?

StackOverflow https://stackoverflow.com/questions/1761930

質問

私たちは現在、いくつかのIBMのWebSphereキューに通信する必要があるアプリケーションを構築しています。キューのもう一方の端で別の世界があります。原因(私にとっては)いくつかの未知の状況に、MQQueueManagerに接続すると、17秒ごとに時間がかかりますが、キューを通じて、その後、メッセージを送信および受信すると、ジョブを消費する時間ではありません。私たちは今のWebSphereの前でWebサービスを配置しているように、我々は装飾とMQQueueManagersとMQQueuesをキャッシュし、それらが接続されている場合、各メッセージは、それぞれ開いて送信する前に確認するというアイデアを思い付きました。いない場合、我々はrepectively MQQueueを開いて、MQQueueManagerに接続してみてください(再び、MQQueueManagerにconnectiongことMQQueueは「インスタント」で開く、17秒かかります)。だから我々は、すべてたまにWebSphereはMQQueueManagerを外します(私たちは大きく、今のためにこれをテストすることはできませんが、我々は慎重であるべきと私は確かに言うことができない)と不運を呼び出すプログラムが再接続する17秒を待つだろうと期待しています。物事が今立つように、我々はこの事の発生が起こることを予測することはできません。 私たちの現在の実装では、.NET用のWebSphere MQクラスを使用しています。 MQQueueManagerが切断されたまたは関連するキューが閉じているとき、私たちはコールバック通知を受信するためにあらゆる可能性はありますか?

役に立ちましたか?

解決

はい!あなたは、最新のWMQ .NETクラスと最新の<のhref =「http://www-1.ibm.com/support/docview.wss?rs=171&uid=swg24011756&loc=en_US&cs=utf-8&lang=en」のrelを使用している場合=「nofollowをnoreferrer」>あなたは、非同期コールバックメソッドを取得する IA9Hサポートパック。 (これは、コールバックを登録して使用する方法を示す.NETサンプルコードが付属しています。)1が利用可能であるか、他の接続がある場合は、登録さ例外リスナーに例外を渡すときに、この方法は、あなたのコールバックルーチンメッセージを渡しますことを私の理解であります紛失したり、キューがGET(DISABLED)に設定されています。

ここの最新WMQクライアントを取得します。 * MQCのような名前のサポートパックを探します。 V8.0クライアントはMQC8、V9クライアントはMQC9である、などである。

は、.NET WMQクラスの古いバージョンを持っていて、常に開いている別のスレッドを維持し、定期的にキューをポーリングすることができますいくつかの理由でアップグレードできない場合。しかし、あまりにも頻繁にポーリングしないでください。過去に私は人々がカウントダウンタイマーとしてクラス変数を使用し見てきました。メッセージが正常に取得またはキューに置かれるたびに、タイマーはその最大にリセットされます。タイマーがゼロに達すると、キューをポーリングします。他のトラフィックは、接続にされていない場合は、この方法であなただけのキューをポーリングします。

scroll top