いくつかのアプリケーションを実行している 4 ノードの Websphere アプリケーション サーバー クラスターがあります。アプリケーションは websphere mq サーバーのキューをリッスンします。クラスター スコープで jms リソースを作成したので、すべてのノードが同じキュー マネージャーに接続し、mq エクスプローラーでのキューのオープン入力カウントは 4 です。問題は、メッセージがキューにパブリッシュされると、ノードの 1 つがメッセージを取得して処理を開始しますが、メッセージ ヘッダーが正しくないというエラーがスローされることです。3 つのノードをシャットダウンし、1 つのみを実行したままにすると、そのノードのアプリケーションがメッセージを読み取り、正常に処理を開始しました。読み取り競合は mq では問題にならないと思っていましたが、事実は別の方向を示しています。
質問する
1409 次
1 に答える
0
GET
の代わりに を使用して同期点でメッセージを読み取った場合、が発行さBROWSE
れるまで、他のスレッドはメッセージを取得できません。ROLLBACK
メッセージを処理しても問題ないCOMMIT
場合は、完了時に a を発行します。
一方、BROWSE
メッセージを取得すると、すべてのスレッドが同じメッセージを取得できます。
起こっていることは何でも、同じメッセージをめぐるスレッドの競合に起因するものではなく、メッセージを何らかの形で破損させます。メッセージがブラウズされるか破壊的に取得されるかに関係なく、WMQ は呼び出しの完全性とアトミック操作を保証します。これを診断するには、トランスポート プロバイダーのネイティブ リターン コードを含むリンクされた例外の出力など、表示されている正確なエラーに関する詳細情報が必要です。
于 2013-08-23T05:37:23.043 に答える