Universal Messaging 10.1 | Concepts | Deployment | Server | Data Routing
Data Routing
Joining a channel to another channel or queue allows you to set up content routing so that events published to the source channel will be passed on to the destination channel/queue automatically. Joins also support the use of filters, thus enabling dynamic content routing.
Please note that while channels can be joined to both channels and queues, queues cannot be used as the source of a join.
Channels can be joined using the Universal Messaging Enterprise Manager GUI or programmatically.
When creating a join there is one compulsory option and two optional ones. The compulsory option is the destination channel. The optional parameters are the maximum join hops and a filter to be applied to the join.
For a description of the general principles involved in creating channel joins, see the section Creating Channel Joins in the Administration Guide. The description details the usage based on the Enterprise Manager, but the same general principles apply if you are using the API.
Hop Count
Joins have an associated hop-count, which can optionally be defined when the join is created. The hop count allows a limit to be put on the number of subsequent joins an event can pass through if published over this join. If a hop count is not defined for a join, it will default to 10.
The hop count is the number of intermediate stores between the source channel and the final destination. As an example, imagine we have 10 channels named "channel0" to "channel9" and all these channels are joined sequentially. When we publish to channel 0, if the join from channel0 to channel1 has a hop count of 5 then the event will be found on channel0 (the source channel), channels 1 to 5 (the intermediate channels) and channel6 (the endpoint).
Loop Detection
Joins allow the possibility of defining a loop of joined channels. To prevent channels receiving multiple copies of the same event, Universal Messaging implements loop detection on incoming events. To illustrate this, imagine a simple example with two channels (channel0 and channel1) and we create a loop by joining channel0 to channel1 and channel1 to channel0. If we publish to channel0 the event will also be published to channel1 over the join. But channel1 is joined to channel0 too, so now the event would get published to channel0 again. Without Universal Messaging's loop detection, this cycle would repeat until the maximum hopcount has been reached.
To prevent this, Universal Messaging detects when a message which has already been published to a channel or queue and will not publish it a second time.
Multiple Path Delivery
Universal Messaging users can define multiple paths over different network protocols between the same places in Universal Messaging. Universal Messaging guarantees that the data always gets delivered once and once only.