0

問題: 分散 VM サーバー上の単一の MQ にアタッチされた複数のコンシューマー アプリケーションのアクティブな仕様があると、MQ メッセージで null ペイロードが発生します。注: 下部の注を参照してください。mq に問題はありません。

詳細: 2 つの VM サーバーに 3 つの Websphere アプリケーションをデプロイしています。1 つのアプリケーションはパブリッシャーであり、他の 2 つのアプリケーションは単一の MQ マネージャーと MQ に接続されたコンシューマーです。2 つのコンシューマ アプリケーションがメッセージを取り出して処理しています。別のサーバー上のコンシューマー アプリケーションは、null ペイロードを受け取ります。複数のアプリケーション サーバー インスタンスが MQ に接続されていることが問題のようであることを確認しました。コンシューマー 2 を使用してサーバー 2 にパブリッシャーをデプロイすることで確認された後、コンシューマー 1 は失敗します。

質問: 別のサーバー インスタンスにデプロイされた複数の MDB アプリケーションを、1 つのキュー マネージャーと 1 つの MQ にバインドしようとした人はいますか?

仕様:

Websphere 7、EJB 3.0 MDB、トランザクションがオフ、別のマシンにインストールされたキューにキューイング。

ゴール:

分散コンピューティング、大量のメッセージに対するスケールアップ。

これは構成の問題だと思いますが、どこを見ればよいか 100% 確信が持てません。MQLink を使用できると読みましたが、サービス バス統合を使用する必要がある理由がわかりません。

サポート ドキュメント: [MQ リンク][1

更新:問題を修正しました。これは、クラスローダーの問題と重複したクラスの組み合わせに関連していました。私が追加した以下のソリューションノートを参照してください。

編集履歴: - 仕様を明確にし、質問を明確にし、全体的な目標を追加しました。- ソリューションへの参照メモ。

4

2 に答える 2

1

別のサーバー インスタンスにデプロイされた複数の MDB アプリケーションを 1 つのローカル MQ にバインドしようとした人はいますか?

複数の MDB アプリケーションが別々のサーバーにデプロイされ、1 つのキュー マネージャー (ただしキューは異なる) に接続するのは通常のシナリオであり、どこにでもあり、すべてのアプリケーションが正常に動作します。

しかし、あなたがしていることは次のとおりだと思います。複数の MDB アプリケーションが別々のサーバーにデプロイされ、1 つのキュー マネージャーに接続し、同じキューをリッスンします

この場合、1 つのメッセージが 1 つのコンシューマーのみによって受信されます。

アプリケーションごとに個別のキューを作成し、パブリッシャーが発行するトピックごとにサブスクリプションを作成する必要があります。

添加:

負荷分散のために直面​​している可能性のある問題は、最初のアプリケーションがメッセージを受け取ったときにコミットを発行しないことだと思います。そのため、コミットされていないメッセージがキューに存在し、他のアプリケーションがキューからメッセージを取得できなくなる可能性があります。最初のアプリケーションは処理を終了するとコミットを発行しますが、メッセージを選択する準備ができているため、再度 get を発行します。

私のアーキテクチャでは、以下のように複数のキュー マネージャーを使用して負荷分散を実装しました。

GatewayQMApp1QMApp2QMなどの 3 つのキュー マネージャーを作成します。

3 つのキュー マネージャーを同じクラスター内に保持します。

GatewayQMでエイリアス キュー (クラスター内で共有) を作成し、Putingアプリにメッセージをゲートウェイ キューに入れるように依頼します。

ここで、App1QM と App2QM のそれぞれに 1 つのローカル クラスター キューを作成します。アプリケーション App1 と App2 をそれぞれ介して、これらのキューから読み取ります。

この実装により、セキュリティが強化され、完璧なロード バランサーが提供されます。

于 2013-10-03T05:10:05.590 に答える
0

この特定の問題は、コードの問題と、クラスのロードの組み合わせが Websphere コンソールで「Parent First」に設定されていることが原因でした。1 つのノードでは機能し、クラスター内の他のノードでは失敗します。これは、「Parent First」設定が原因であると考えられます。

さらに重要なことは、分散コンピューティングを提供するために複数のアクティブな仕様を単一の MQ にバインドするクラスター内の構成に関しては、正しいソリューションです。

ただし、非常に大量のソリューションを探している場合は、上記の「nitgeek」ソリューション参照に「ポイント」が必要です。単一の MQ が非常に深くなる可能性があり、1 つを完全に活用するには多くの時間がかかることを理解することが重要です。私の現在の構成は、複数の MDB を使用した迅速な構成と分散処理の出発点として適しています。

于 2013-10-20T17:51:41.723 に答える