12.2. メッセージ迂回の設定
ブローカーインスタンスで迂回を設定するには、broker.xml
設定ファイルの core
要素に divert
要素を追加します。
<core> ... <divert name= > <address> </address> <forwarding-address> </forwarding-address> <filter string= > <routing-type> </routing-type> <exclusive> </exclusive> </divert> ... </core>
- divert
-
迂回の名前付きインスタンス。各迂回に一意の名前がある限り、複数の
divert
要素をbroker.xml
設定ファイルに追加できます。 - address
- メッセージを迂回するアドレス
- forwarding-address
- メッセージを転送する アドレス
- filter
- オプションのメッセージフィルター。フィルターを設定すると、フィルター文字列に一致するメッセージのみが迂回されます。フィルターを指定しない場合、すべてのメッセージは迂回と一致すると見なされます。
- routing-type
迂回されたメッセージのルーティングタイプ。迂回は以下に設定できます。
-
anycast
またはマルチキャスト
ルーティングのタイプのメッセージへの適用 - 既存のルーティングタイプを 削除 します。
- 既存のルーティングタイプを 通過 します (つまり保持されます)。
-
ルーティングタイプの制御は、メッセージにルーティングタイプがすでに設定されているものの、別のルーティングタイプを使用するアドレスにメッセージを迂回する必要がある場合に役立ちます。たとえば、ブローカーは、迂回の routing-type
パラメーターを MULTICAST
に設定しない限り、anycast
ルーティングタイプのメッセージを マルチキャスト
を使用するキューにルーティングできません。迂回の routing-type
パラメーターの有効な値は ANYCAST
、MULTICAST
、PASS
、および STRIP
です。デフォルト値は STRIP
です。
- exclusive
-
迂回が排他的であるか ( プロパティーを
true
に設定 ) または非排他的であるかを指定します ( プロパティーをfalse
に設定 )。
以下のサブセクションは、排他的な迂回および排他的でない迂回の設定例を示しています。
12.2.1. 排他的な迂回の例
以下は、排他的な迂回の設定例です。排他的な迂回により、一致するメッセージはすべて最初に設定されたアドレスから新しいアドレスに迂回されます。一致するメッセージは元のアドレスにルーティングされません。
<divert name="prices-divert"> <address>priceUpdates</address> <forwarding-address>priceForwarding</forwarding-address> <filter string="office='New York'"/> <exclusive>true</exclusive> </divert>
上記の例では、prices-divert
と呼ばれる迂回を定義します。これは、アドレス priceUpdates
に送信されたメッセージを別のローカルアドレスである priceForwarding
に迂回します。メッセージフィルター文字列も指定します。メッセージプロパティー office
と値 New York
を持つメッセージのみが迂回されます。その他のメッセージはすべて元のアドレスにルーティングされます。最後に、迂回が排他的であることを指定します。
12.2.2. 排他的でない迂回の例
以下は、排他的でない迂回の設定例です。排他的でない迂回では、メッセージは元のアドレスに送信されますが、ブローカーはメッセージのコピーを指定された転送アドレスにも送信します。したがって、排他的でない迂回は、メッセージフローを分割する方法です。
<divert name="order-divert"> <address>orders</address> <forwarding-address>spyTopic</forwarding-address> <exclusive>false</exclusive> </divert>
上記の例では、order-divert
という迂回を定義し、アドレスの 順序
に送信されたすべてのメッセージのコピーを取り、spyTopic
と呼ばれるローカルアドレスに送信します。また、迂回が排他的ではないように指定します。
関連情報
排他的な迂回と非排他的な迂回の両方を使用する詳細な例は、Divert Example (外部) を参照してください。