22.6. 複数のキューを持つアドレスの注意


メッセージが、バインドされた複数のキューを持つアドレスにルーティングされた場合 (たとえば、JMS サブスクリプション) は、メモリー内にメッセージのコピーが 1 つしかありません。各キューはこれに対する参照のみを扱います。つまり、メッセージを参照するすべてのキューがそのメッセージを配信すると、初めてメモリーが解放されます。
例:
  • アドレスが 10 個のキューを持ちます。
  • キューの 1 つがメッセージを配信しません (おそらく、低速なコンシューマーが原因)。
  • メッセージは、連続してアドレスに到着し、ページングが開始されます。
  • メッセージが送信された場合であっても他の 9 個のキューは空になります。
この例では、プロセスがページング解除し、他のキューが最終的にいくつかのメッセージを受け取る前にいくつかのメッセージを最後のキューが配信するまでプロセスは待機する必要があります。

重要

メッセージセレクターは、メモリー内のメッセージに対してのみ動作します。大量のメッセージをディスクにページングし、ページングされる一部のメッセージのみに一致するセレクターがある場合、これらのメッセージは、メモリー内のメッセージが消費されるまで消費されません。
HornetQ は、一致するメッセージを見つけるためにディスク上のページファイルをスキャンしません。これはメッセージングシステムの主な役割ではありません。セレクターを使用して非常に大きいキューでメッセージの小さいサブセットを選択する実装には、リレーショナルデータベースが推奨されます。これは、この機能がリレーショナルデータベースのテーブルに対してクエリーを実行することに似ているためです。

重要

page-size-bytes (サーバー) を ack-batch-size (クライアント) よりも小さい値に設定しないでください。設定すると、システムがハングしているように見えることがあります。
メッセージは、サーバーで識別されるまでサーバーメモリーに残るため、特定のアドレスのメッセージサイズに影響を与えます。
アドレスに対するメッセージがディスクにページングされ、消費される場合、メッセージが消費および承認された後にこのアドレスで十分なメモリーが解放されたときに、これらのメッセージはディスクからページング解除されます。ただし、メッセージが承認されない場合は、メモリー内に空き領域がないため、追加のメッセージはページング解除されません。この場合は、メッセージ消費がハングしているように見えることがあります。
メッセージが明示的に承認されない場合、メッセージは、クライアントの "ack-batch-size" 設定に基づいて承認されます。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat