A server forwards topic messages along routes only when the global
property is defined for the topic; see addprop topic
and create topic
.
Topic messages can traverse multiple hops.
When a route becomes disconnected (for example, because of network problems), the forwarding server stores topic messages. When the route reconnects, the server forwards the stored messages.
Servers connected by routes do exchange messages sent to temporary topics.
To ensure forwarding of messages along routes, servers propagate their topic subscriptions to other servers. For example, the top of Figure 25 depicts an enterprise with three serversA, M and Bconnected by routes in a multi-hop zone. The bottom of Figure 25 illustrates the mechanism at work within the servers to route messages from a producer client of server A, through server M, to server B and its subscriber client. Consider this sequence of events.
If the client of server B creates a non-durable subscriber to T1, then if the client process exits, the servers delete the entire sequence of internal subscribers. When the client restarts, it generates a new sequence of subscribers; meanwhile, the client might have missed messages.
If the client of server B creates a durable subscriber to T1, then if the client process exits, the entire sequence of internal subscribers remains intact; messages continue to flow through the servers in store-and-forward fashion. When the client restarts, it can consume all the messages that B has been storing in the interim.
In an active-active route between servers B and M, if B fails, then M retains its internal subscriber and continues to store messages for clients of B. When B reconnects, M forwards the stored messages.
In an active-passive route configured on B, if B fails, then M removes its internal subscriber and does not store messages for clients of Bpotentially resulting in a gap in the message stream. When B reconnects, M creates a new internal subscriber and resumes forwarding messages.
Combining durable subscribers with routes creates a potential demand for storageespecially in failure situations. For example, if server B fails, then server M stores messages until B resumes. We recommend that you set the maxbytes
property of the topic (T1) on each server, to prevent unlimited storage growth (which could further disrupt operation).
A server forwards a global topic message along routes to all servers with subscribers for that topic. When each of those other servers requires only a small subset of the messages, this policy could potentially result in a high volume of unwanted network traffic. You can specify message selectors on routes, to narrow the subset of topic messages that traverse each route.
![]() |
Message selectors on routes are different from message selectors on individual subscribers, which narrow the subset of messages that the server delivers to the subscriber client.
|
Figure 26 illustrates an enterprise with a central server for processing customer orders, and separate regional servers for billing those orders. For optimal use of network capacity, we configure topic selectors so that each regional server gets only those orders related to customers within its region.
Specify message selectors for global topics as properties of routes. You can define these properties in two ways:
The message selector properties have the same syntax whether they appear in a command or in a configuration file:
incoming_topic=topicName
selector="messageSelector
" outgoing_topic=topicName
selector="messageSelector
"
In the example of Figure 26, an administrator might configure these routes on the central order server:
setprop route Canada outgoing_topic="orders" selector="country=’Canada’" setprop route Mexico outgoing_topic="orders" selector "country=’Mexico’" setprop route USA outgoing_topic="orders" selector="country=’USA’"
Those commands would create these entries in routes.conf
:
[Canada] url=ssl://canada:7222 outgoing_topic=orders selector="country=’Canada’" ... [Mexico] url=ssl://mexico:7222 outgoing_topic=orders selector="country=’Mexico’" ... [USA] url=ssl://usa:7222 outgoing_topic=orders selector="country=’USA’" ...
outgoing_topic
and incoming_topic
are symmetric. Whether A specifies a route to B with incoming_topic
selectors, or B specifies a route to A with outgoing_topic
selectors, the effect is the same.
In an active-active configuration, you may specify selectors on either or both servers. If you specify outgoing_topic
selector S1
for topic T on server A, and incoming_topic
selector S2
for T on server B, then the effective selector for T on the route from A to B is (S1 AND S2)
.
See also Active and Passive Routes.
You can specify wildcards in topic names. For each actual topic, the server uses logical AND
to combine all the selectors that match the topic.
TIBCO Enterprise Message Service™ User’s Guide Software Release 4.3, February 2006 Copyright © TIBCO Software Inc. All rights reserved www.tibco.com |