20.7. 迂回
Diverts は、HornetQ で設定されるオブジェクトです。メッセージをあるアドレス (メッセージのルーティング先) から別のアドレスに迂回する場合に役に立ちます。Diverts は、サーバー設定ファイル (
standalone.xml
および domain.xml
) で設定できます。
迂回は、以下のタイプに分類できます。
迂回は
- 特別な迂回: メッセージは新しいアドレスにのみ迂回され、古いアドレスには送信されません
- 特別でない迂回: メッセージは古いアドレスに引き続き送信され、メッセージのコピーが新しいアドレスに送信されます。特別でない迂回はメッセージのフローを分割するために使用できます。
Transformer
とオプションのメッセージフィルターを適用するよう設定できます。オプションのメッセージフィルターを使用すると、指定したフィルターに一致するメッセージのみを迂回できます。トランスフォーマーは、メッセージを別の形式に変換するために使用されます。トランスフォーマーが指定された場合は、迂回されたすべてのメッセージが Transformer
によって変換されます。
迂回により、メッセージは同じサーバー内のアドレスにのみ迂回されます。別のサーバーのアドレスにメッセージを迂回する必要がある場合は、以下に示されたパターンに従ってください。
迂回とブリッジを組み合わせてさまざまなルーティングを作成できます。
- メッセージをローカルストアと転送キューに迂回します。そのキューから消費し、メッセージを別のサーバーのアドレスに迂回するブリッジをセットアップします
20.7.1. 特別な迂回
特別な迂回により、すべてのメッセージが古いアドレスから新しいアドレスに迂回します。一致するメッセージは古いアドレスにルーティングされません。特別な迂回は、
standalone.xml
および domain.xml
サーバー設定ファイルで exclusive
属性を true
に設定することにより有効にできます。
以下の例は、サーバー設定ファイルで設定された特別な迂回を示しています。
<divert name="prices-divert"> <address>jms.topic.priceUpdates</address> <forwarding-address>jms.queue.priceForwarding</forwarding-address> <filter string="office='New York'"/> <transformer-class-name> org.hornetq.jms.example.AddForwardingTimeTransformer </transformer-class-name> <exclusive>true</exclusive> </divert>以下のリストは、上記の例で使用された属性を示しています。
address
: このアドレスに送信されたメッセージは別のアドレスに迂回されますforwarding-address
: メッセージは古いアドレスからこのアドレスに迂回されますfilter-string
:filter-string
値に一致するメッセージが迂回されます。他のすべてのメッセージは通常のアドレスにルーティングされますtransformer-class-name
: このパラメーターを指定すると、一致する各メッセージの変換が実行されます。これにより、迂回する前にメッセージの本文またはプロパティーを変更できるようになりますexclusive
: 特別な迂回を有効または無効にするために使用されます