4.5. ポイントツーポイントとパブリッシュ - サブスクライブの併用
ポイントツーポイントとパブリッシュ/サブスクライブの両方のセマンティクスを有効にしてアドレスを定義することができます。通常は推奨されませんが、これは、orders という名前の JMS キューと、orders という名前の JMS トピックが必要な場合などに役立ちます。ルーティングの種類が異なるため、アドレスが異なっているように見えます。
JMS クライアントの例を使用すると、JMS キュープロデューサにーよって送信されるメッセージは、anycast ルーティングタイプを使用してルーティングされます。JMS トピックプロデューサーによって送信されるメッセージは、multicast ルーティング タイプを使用します。さらに、JMS トピックコンシューマーがアタッチすると、独自のサブスクリプションキューにアタッチされます。ただし、JMS キューコンシューマーは anycast キューに割り当てられます。
図4.4 ポイントツーポイントおよびパブリッシュ - サブスクライブ
このシナリオの動作は、使用されるプロトコルによって異なります。JMS の場合、トピックとキュープロデューサーとコンシューマーの間に明確な区別があり、これによりロジックを簡単に転送できます。AMQP などの他のプロトコルはこの区別を行いません。AMQP 経由で送信されるメッセージは、anycast および multicast によってルーティングされ、コンシューマーデフォルトは anycast です。詳細は、プロトコルのセクションで各プロトコルの動作を確認してください。
以下の XML の抜粋は、BROKER_INSTANCE_DIR/etc/broker.xml で、anycast と multicast の両方のルーティングタイプを使用するアドレスの設定の例です。通常、サブスクリプションキューはオンデマンドで作成されるため、multicast ルーティングタイプ内に特定の queue 要素をリストする必要はありません。
<configuration ...>
<core ...>
...
<address name="foo.orders">
<anycast>
<queue name="orders"/>
</anycast>
<multicast/>
</address>
</core>
</configuration>