HornetQ では、ライブバックアップペアタイプのクラスタリングを実行できることを理解しています。ドキュメントから、クラスター内の 2 つ以上のノード間で負荷分散を行うことができることにも気付きました。考えられるトポロジはこれらの 2 つだけですか? クラスター化されたキュー パターンをどのように実装しますか?
ありがとう!
2 つの用語を使用してこれに答えさせてください。1 つは hornetq のコア キューです。
クラスター接続を作成するとき、クラスター接続の基本アドレスの一部であるアドレス (通常はアドレスはjmsです)
コア キューの負荷を分散すると、異なるノード間で負荷が分散されます。つまり、各ノードは一度に 1 つのメッセージを受け取ります。
同じアドレスに複数のキューがある場合、クラスター上のすべてのキューがメッセージを受信します。これらのキューの 1 つが複数のノードにある場合、負荷分散される各メッセージに対する前述のルールも適用されます。
JMS 用語では、次のようになります。
トピック サブスクリプションは、トピックに送信されたすべてのメッセージを受信します。トピック サブスクリプション名/ID が複数のノードに存在する場合 (異なるノードで同じ clientID と subscriptionName など)、それらは負荷分散されます。
キューは、既存のすべてのキューを通じて負荷分散されます。
コンシューマーがいないときの転送の設定があることに注意してください。つまり、コンシューマーがいない場合、メッセージが届かない可能性があります。それを使用して、それを構成することもできます。
クラスター化されたキュー パターンをどのように実装しますか?
EAP 6.1/HornetQ 2.3 のヒント 分散キュー/トピックを実装するには:
お使いのバージョンの公式ドキュメントをお読みください: 例: 2.3 の場合https://docs.jboss.org/hornetq/2.3.0.Final/docs/user-manual/html/clusters.html
古い設定は非推奨であることに注意してください。クラスター接続をclusterd=true
定義するだけで十分です。内部コア ブリッジが自動的に作成されることを確認してください / clustered=true は 2.3 以降では非推奨です
full-ha構成をベースラインとして使用するか、jgroups が適切に設定されていることを確認してください。この投稿は、この件について深く掘り下げています: https://developer.jboss.org/thread/253574
それがなければ、エラーは表示されず、コアブリッジ接続が確立されます...しかし、メッセージは配信されず、エラーも警告もまったく表示されません...
たとえば、ドメイン ID (「その他」) とレルム ID (「ApplicationRealm」) を混同して認証エラーが発生しましたが、エラーは一般的なものだったので、ユーザー、パスワード、ロールをチェックするのに時間を無駄にしました... 最終的に判明するまで.
logger.org.hornetq.level=DEBUG
)