1

現在、一部の IBM WebSphere キューと通信する必要があるアプリケーションを構築しています。列の向こう側には別世界が広がっています。(私にとって) 不明な状況により、MQQueueManager への接続には毎回 17 秒かかりますが、その後のキューを介したメッセージの送受信は時間のかかる作業ではありません。WebSphere の前に Web サービスを配置しているので、MQQueueManagers と MQQueues をデコレートしてキャッシュし、各メッセージを送信する前にそれらが接続されているか、開いているかを確認するというアイデアを思いつきました。そうでない場合は、MQQueueManager に接続して、それぞれ MQQueue を開きます (ここでも、MQQueueManager への接続には 17 秒かかり、MQQueue を開くのは「瞬時」です)。そのため、WebSphere が時々 MQQueueManager を切断し (今のところこれを厳密にテストすることはできないため、はっきりとは言えませんが、注意する必要があります)、不運な呼び出しプログラムが再接続するまで 17 秒待機することが予想されます。現状では、このことが起こることを予測することはできません。現在の実装では、WebSphere MQ classes for .NET を使用しています。MQQueueManager が切断されたとき、または関連するキューが閉じられたときに、コールバック通知を受け取る可能性はありますか? ネット。MQQueueManager が切断されたとき、または関連するキューが閉じられたときに、コールバック通知を受け取る可能性はありますか? ネット。MQQueueManager が切断されたとき、または関連するキューが閉じられたときに、コールバック通知を受け取る可能性はありますか?

4

1 に答える 1

1

はい!最新の WMQ .Net クラスと最新のIA9H SupportPacを使用すると、非同期コールバック メソッドを取得できます。(これには、コールバックを登録して使用する方法を示す .Net サンプル コードが付属しています。) このメソッドは、コールバック ルーチンが利用可能な場合にメッセージを渡すか、接続が確立されていない場合は、登録済みの例外リスナーに例外を渡すことを理解しています。紛失またはキューが に設定されていGET(DISABLED)ます。

ここで最新の WMQ クライアントを入手してください。MQC* のような名前のサポートパックを探してください。v8.0 クライアントは MQC8、v9 クライアントは MQC9 などです。

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

于 2009-11-19T23:57:27.857 に答える