0

生産者 <--> 消費者

上記のシナリオでは、(コンシューマの) JMS キューに多くのメッセージを入れようとしている「N」個のプロデューサがあるとしましょう。

私の質問は、特にキューを使用する JMS 環境で負荷分散がどのように機能するかです。

この場合、JNDI は十分な間接化を提供すると思います。そのため、すべてのクライアントは、JNDI ベースのキューと接続ファクトリを検索しているだけです。また、任意の種類の loadDistributor がコンシューマーとプロデューサーの間に配置され、着信メッセージを受け取ることができます。

これらの着信メッセージを JMS プロバイダーのファームにどのように配布しますか (着信トラフィックを処理するには、それらのファームが必要だと思います)、複数のキューの同期されたコピーをどのように維持しますか..または任意のメッセージを入れますか? MDB を使用して処理するだけです。しかし、「メッセージが受信された順序で処理される」ことをどのように保証しますか?なぜなら、それらはすべて一連のキューに分散されているからです...

この種の「高負荷」環境で推奨されるアプローチは何ですか?

4

1 に答える 1

1

キューは本質的に「シリアル」であり、キュー内のメッセージはそれぞれ 1 つの受信者に配信されます。したがって、たとえば 2 つの MBD がキューでリッスンしている場合、それぞれが順番にメッセージを受け取り、次のメッセージを取得します。

着信メッセージの場合は、それらを順番にキューに入れるだけです。

あなたが調べていることを完全には理解していないかもしれませんが、直接見てみると、複数の MDB (異なるホスト上に存在する可能性がある) がメッセージを選択する 1 つのキューを公開する 1 つの JMS プロバイダー (「メッセージング ハブ」) が必要であることがわかります。 .

于 2011-04-13T13:09:06.587 に答える