4.5. ポイントツーポイントおよびパブリッシュサブスクライブメッセージング両方のアドレスの設定
ポイントツーポイントとパブリッシュ/サブスクライブの 両方 のセマンティクスを使用してアドレスを設定することもできます。
ポイントツーポイントとパブリッシュ/サブスクライブセマンティクスの両方を使用するアドレスの設定は、通常 推奨されません。しかし、例えば、orders
という名前の JMS キューと、同じく orders
という名前の JMS トピックが必要な場合には便利な場合もあります。異なるルーティングタイプにより、アドレスがクライアント接続で区別されます。この状況では、JMS キュープロデューサーによって送信されるメッセージは、anycast
ルーティングタイプを使用します。JMS トピックプロデューサーによって送信されるメッセージは、multicast
ルーティングタイプを使用します。JMS トピックコンシューマーがブローカーに接続すると、独自のサブスクリプションキューに割り当てられます。ただし、JMS キューコンシューマーは anycast
キューに割り当てられます。
以下の図は、ポイントツーポイントおよびパブリッシュサブスクライブメッセージングの例を示しています。
図4.4 ポイントツーポイントおよびパブリッシュサブスクライブメッセージング
以下の手順は、ポイントツーポイントとパブリッシュ/サブスクライブメッセージングの両方にアドレスを設定する方法を示しています。
このシナリオの動作は、使用されるプロトコルによって異なります。JMS の場合、トピックとキュープロデューサーとコンシューマーの間に明確な区別があり、これによりロジックを簡単に転送できます。AMQP などの他のプロトコルはこの区別を行いません。AMQP 経由で送信されるメッセージは、anycast
および multicast
によってルーティングされ、コンシューマーデフォルトは anycast
です。詳細は、3章ネットワーク接続でのメッセージングプロトコルの設定 を参照してください。
手順
-
<broker_instance_dir>/etc/broker.xml
設定ファイルを開きます。 address
要素のqueue
要素でanycast
設定要素をラップします。以下に例を示します。<configuration ...> <core ...> ... <address name="orders"> <anycast> <queue name="orders"/> </anycast> </address> </core> </configuration>
空の
multicast
設定要素をアドレスに追加します。<configuration ...> <core ...> ... <address name="orders"> <anycast> <queue name="orders"/> </anycast> <multicast/> </address> </core> </configuration>
注記通常、ブローカーはサブスクリプションキューをオンデマンドで作成します。したがって、
multicast
要素内に特定のキューを記述する必要はありません。