[jboss-cvs] JBoss Messaging SVN: r6761 - trunk/docs/user-manual/en/modules.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Wed May 13 05:31:58 EDT 2009
Author: timfox
Date: 2009-05-13 05:31:58 -0400 (Wed, 13 May 2009)
New Revision: 6761
Modified:
trunk/docs/user-manual/en/modules/diverts.xml
Log:
diverts
Modified: trunk/docs/user-manual/en/modules/diverts.xml
===================================================================
--- trunk/docs/user-manual/en/modules/diverts.xml 2009-05-13 09:22:39 UTC (rev 6760)
+++ trunk/docs/user-manual/en/modules/diverts.xml 2009-05-13 09:31:58 UTC (rev 6761)
@@ -1,8 +1,70 @@
<?xml version="1.0" encoding="UTF-8"?>
<chapter id="diverts">
<title>Diverting and Duplicating Message Flows</title>
- <para>blah</para>
-
-
-
+ <para>JBoss Messaging allows you to configure objects called <emphasis>diverts</emphasis> with some simple server configuration.</para>
+ <para>Diverts allow you to transparently divert messages routed to one address to some other address, without making any changes to any
+ client application logic.</para>
+ <para>Diverts can be <emphasis>exclusive</emphasis>, meaning that that the message is diverted to the new address, and does not go to the old address
+ at all, or they can be <emphasis>non-exclusive</emphasis> which means the message continues to go the old address, and a <emphasis>copy</emphasis> of
+ it is also sent to the new address. Non-exclusive diverts can therefore be used for duplicating message flows, e.g. there may be a requirement to monitor every order sent
+ to an order queue.</para>
+ <para>Diverts can also be configured to have an optional message filter. If specified then only messages that match the filter will be diverted.</para>
+ <para>Diverts can also be configured to apply a Transformer. If specified, all diverted messages will have the opportunity of being transformed by the Transformer.</para>
+ <para>A divert will only divert a message to an address on the <emphasis>same server</emphasis>, however, if you want to divert to an
+ address on a different server, a common pattern would be to divert to a local store-and-forward queue, then set up a bridge which consumes
+ from that queue and forweards to an address on a different server.</para>
+ <para>Diverts are therefore a very sophisticated concept, which when combined with bridges can be used to create interesting and complex routings.
+ The set of diverts on a server can be thought of as a type of routing table for messages. Combining diverts with bridges allows you
+ to create a distributed network of reliable routing connections between multiple geographically distributed servers, creating your global
+ messaging mesh.</para>
+ <para>Diverts are defined as xml in the <literal>jbm-configuration.xml</literal> file. There can be zero or more diverts in the file.</para>
+ <para>Please see the divert example [LINK] for a full working example showing you how to configure and use diverts.</para>
+ <para>Let's take a look at some divert examples:</para>
+ <section>
+ <title>Exclusive Divert</title>
+ <para>Let's take a look at an exclusive divert. An exclusive divert diverts all matching messages that are routed to the old address
+ to the new address. Matching messages do not get routed to the old address.</para>
+ <para>Here's some example xml configuration for an exclusive divert, it's taken from the divert example:</para>
+ <programlisting>
+<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.jboss.jms.example.AddForwardingTimeTransformer</transformer-class-name>
+ <exclusive>true</exclusive>
+</divert>
+ </programlisting>
+ <para>We define a divert called '<literal>prices-divert</literal>' that will divert any messages sent to the address
+ '<literal>jms.topic.priceUpdates</literal>' (this corresponds to any messages sent to a JMS Topic called '<literal>priceUpdates</literal>').
+ to another local address '<literal>jms.queue.priceForwarding</literal>' (this corresponds to a local JMS Queue called
+ '<literal>priceForwarding</literal>'</para>
+ <para>We also specify a message filter string so only messages with the message property <literal>office</literal> with value
+ <literal>New York</literal> will get diverted, all other messages will continue to be routed to the normal address. The filter string is
+ optional, if not specified then all messages will be considered matched.</para>
+ <para>In this example a transformer class is specified. Again this is optional, and if specified the transformer will be executed for
+ each matching message. This allows you to change the message's body or properties before it is diverted. In this example the transformer
+ simply adds a header that records the time the divert happened.</para>
+ <para>This example is actually diverting messages to a local store and forward queue, which is configured with a bridge which forwards
+ the message to an address on another JBoss Messaging server. Please see the example for more details.</para>
+ </section>
+ <section>
+ <title>Non-exclusive Divert</title>
+ <para>Now we'll take a look at a non-exclusive divert. Non exclusive diverts are the same as exclusive diverts, but they only forward a
+ <emphasis>copy</emphasis> of the message to the new address. The original message continues the old address</para>
+ <para>You can therefore think of non-exclusive diverts as <emphasis>duplicating</emphasis> a message flow.</para>
+ <para>Non exclusive diverts can be configured in the same was as exclusive diverts with an optional filter and transformer, here's
+ an example non-exclusive divert, again from the divert example:</para>
+ <programlisting>
+<divert name="order-divert">
+ <address>jms.queue.orders</address>
+ <forwarding-address>jms.topic.spyTopic</forwarding-address>
+ <exclusive>false</exclusive>
+</divert>
+ </programlisting>
+ <para>The above divert example takes a copy of every message sent to the address '<literal>jms.queue.orders</literal>' (Which
+ corresponds to a JMS Queue called '<literal>orders</literal>') and sends it to a local address called
+ '<literal>jms.topic.SpyTopic</literal>' (which corresponds to a JMS Topic called '<literal>SpyTopic</literal>').</para>
+ </section>
+
+
</chapter>
More information about the jboss-cvs-commits
mailing list