1

いくつかのアプリケーションを実行している 4 ノードの Websphere アプリケーション サーバー クラスターがあります。アプリケーションは websphere mq サーバーのキューをリッスンします。クラスター スコープで jms リソースを作成したので、すべてのノードが同じキュー マネージャーに接続し、mq エクスプローラーでのキューのオープン入力カウントは 4 です。問題は、メッセージがキューにパブリッシュされると、ノードの 1 つがメッセージを取得して処理を開始しますが、メッセージ ヘッダーが正しくないというエラーがスローされることです。3 つのノードをシャットダウンし、1 つのみを実行したままにすると、そのノードのアプリケーションがメッセージを読み取り、正常に処理を開始しました。読み取り競合は mq では問題にならないと思っていましたが、事実は別の方向を示しています。

4

1 に答える 1

0

GETの代わりに を使用して同期点でメッセージを読み取った場合、が発行さBROWSEれるまで、他のスレッドはメッセージを取得できません。ROLLBACKメッセージを処理しても問題ないCOMMIT場合は、完了時に a を発行します。

一方、BROWSEメッセージを取得すると、すべてのスレッドが同じメッセージを取得できます。

起こっていることは何でも、同じメッセージをめぐるスレッドの競合に起因するものではなく、メッセージを何らかの形で破損させます。メッセージがブラウズされるか破壊的に取得されるかに関係なく、WMQ は呼び出しの完全性とアトミック操作を保証します。これを診断するには、トランスポート プロバイダーのネイティブ リターン コードを含むリンクされた例外の出力など、表示されている正確なエラーに関する詳細情報が必要です。

于 2013-08-23T05:37:23.043 に答える