Sign up to receive free email alerts when patent applications with chosen keywords are publishedSIGN UP

Abstract:

Systems and methods are provided that route a message only along routes
in a messaging network that lead to a currently active consumer for the
message. The messaging network adapts to changes in the message
preferences of the message consumer, and the message consumer's
availability throughout the messaging network. In various embodiments,
changes to message routing criteria at a destination broker in the
network are propagated to all other brokers in the network until the
entire network is adapted, and the network routes messages based on the
adaptations, which reflect the current connectivity and message accepting
criteria of each message consumer.

Claims:

1. A method, implemented using a computing system, for routing messages
in a messaging network, comprising: maintaining routing information for
each of a plurality of message consumers connected to the messaging
network; receiving a message; comparing, by the computing system, an
attribute of the message to the routing information for each of the
plurality message consumer connected to the messaging network;
determining, by the computing system and based on the comparing, whether
there is a broker that is connected to a message consumer of the
plurality of messages consumers that can receive the message; and
routing, by the computing system, the message to the broker that was
determined only if the broker is connected to the message consumer that
can receive the message.

2. The method of claim 1, further comprising: determining, by the
computing system and based on the comparing, whether there is a message
consumer of the plurality of message consumers that is directly connected
to the computing system that can receive the message; and routing, by the
computing system, the message to the message consumer that was determined
only if the message consumer can receive the message.

3. The method of claim 1, wherein the attribute of the message comprises
metadata associated with the message.

4. The method of claim 3, wherein the metadata associated with the
message comprises a topic assigned to the message by a producer of the
message.

5. The method of claim 1, wherein the message includes content, and
wherein the attribute of the message comprises information in the content
of the message.

6. The method of claim 1, wherein the message includes content; and
wherein the routing information comprises information that must match
corresponding information in the content of the message; and wherein the
information that must match is specified by the message consumer.

7. The method of claim 1, wherein maintaining routing information for
each message consumer comprises: updating the routing information for a
message consumer of the plurality of message consumers that changes a
connection status with the messaging network.

8. A system for routing messages comprising: a memory containing
instructions; and a processor, connected to the memory, that executes the
instructions to perform operations comprising: maintaining routing
information for each of a plurality of message consumers connected to the
messaging network; receiving a message; comparing, by the computing
system, an attribute of the message to the routing information for each
of the plurality of message consumers connected to the messaging network;
determining, by the computing system and based on the comparing, whether
there is a broker that is connected to a message consumer of the
plurality of message consumers that can receive the message; and routing,
by the computing system, the message to the broker that was determined
only if the broker is connected to the message consumer that can receive
the message.

9. The system of claim 8, the operations further comprising: determining,
by the computing system and based on the comparing, whether there is a
message consumer of the plurality of message consumers that is directly
connected to the computing system that can receive the message; and
routing, by the computing system, the message to the message consumer
that was determined only if the message consumer can receive the message.

10. The system of claim 8, wherein the attribute of the message comprises
metadata associated with the message.

11. The system of claim 10, wherein the metadata associated with the
message comprises a topic assigned to the message by a producer of the
message.

12. The system of claim 8, wherein the message includes content, and
wherein the attribute of the message comprises information in the content
of the message.

13. The system of claim 8, wherein the message includes content; and
wherein the routing information comprises information that must match
corresponding information in the content of the message; and wherein the
information that must match is specified by the message consumer.

14. The system of claim 8, wherein maintaining routing information for
each message consumer comprises: updating the routing information for a
message consumer of the plurality of message consumers that changes a
connection status with the messaging network.

15. A non-transitory computer-readable medium containing instructions
that, when executed by a processor, perform a method comprising:
maintaining routing information for each of a plurality of message
consumers connected to the messaging network; receiving a message;
comparing, by the computing system, an attribute of the message to the
routing information for each message consumer of the plurality of message
consumers connected to the messaging network; determining, by the
computing system and based on the comparing, whether there is a broker
that is connected to a message consumer of the plurality of message
consumers that can receive the message; and routing, by the computing
system, the message to the broker that was determined only if the broker
is connected to the message consumer that can receive the message.

16. The non-transitory computer-readable medium of claim 15, the method
further comprising: determining, by the computing system and based on the
comparing, whether there is a message consumer of the plurality of
message consumers that is directly connected to the computing system that
can receive the message; and routing, by the computing system, the
message to the consumer that was determined only if the consumer can
receive the message.

17. The non-transitory computer-readable medium of claim 15, wherein the
attribute of the message comprises metadata associated with the message.

18. The non-transitory computer-readable medium of claim 15, wherein the
message includes content, and wherein the attribute of the message
comprises information in the content of the message.

19. The non-transitory computer-readable medium of claim 15, wherein the
message includes content; and wherein the routing information comprises
information that must match corresponding information in the content of
the message; and wherein the information that must match is specified by
the message consumer.

20. The non-transitory computer-readable medium of claim 15, wherein
maintaining routing information for each message consumer comprises:
updating the routing information for a message consumer when the message
consumer changes a connection status with the messaging network.

Description:

FIELD

[0001] The present invention relates to message routing generally, and
more particularly relates to routing a message exclusively along paths in
a network that lead to a consumer of the message.

BACKGROUND

[0002] In conventional messaging systems, the communication routes between
brokers are statically defined at system setup, often based on the
connections of message consumers who exist at the time that the network
is first configured. Such systems typically follow a publish and
subscribe model of message distribution, forwarding all messages from
message producers to all brokers in the network because a consumer for
any particular message may potentially be connected to any broker in the
network. Such conventional systems have no knowledge or tracking of
whether or not a consumer for a particular message exists along any
particular route through the network.

[0003] As a consequence, conventional systems constantly forward messages
to brokers that have no consumers connected to them, either directly or
indirectly. This results in inefficient and unnecessary use of system
resources, such as communication bandwidth between brokers, as well as
processing and storage resources on each individual broker that
unnecessarily handles a message for which there is no downstream
consumer. This also results in increased and unnecessary security risks,
as messages traverse communications links between brokers, and are stored
at least briefly on brokers, in portions of the network that do not lead
to message consumers.

[0004] Accordingly, it is desirable to provide systems and methods that
dynamically route messages only to brokers and portions of the messaging
network that lead to currently connected consumer(s) of the messages.

DESCRIPTION OF DRAWINGS

[0005] The accompanying drawings, which are incorporated in and constitute
a part of this specification, illustrate several embodiments of the
invention and together with the description, serve to explain the
principles of the invention.

[0007] FIGS. 2a-2c are diagrams showing a network of message brokers
illustrating an exemplary messaging system consistent with embodiments of
the invention;

[0008] FIGS. 3a-3c are diagrams showing a network of message brokers
illustrating an exemplary messaging system consistent with embodiments of
the invention;

[0009]FIG. 4 is a flowchart showing an exemplary process for routing
messages from one broker to another, consistent with embodiments of the
invention; and

[0010]FIG. 5 is a block diagram of an exemplary computing system that may
be used to implement embodiments consistent with the invention.

DESCRIPTION OF EMBODIMENTS

[0011] Reference will now be made in detail to embodiments of the
invention, examples of which are illustrated in the accompanying
drawings. Wherever convenient, the same reference numbers will be used
throughout the drawings to refer to the same or like parts.

[0012] Embodiments consistent with the present teachings relate to systems
and methods for dynamic messaging routing that include a network of
brokers that dynamically keep track of whether and where message
consumers are connected to the network, including keeping track of when a
connection status changes (e.g., when a consumer connects to, or
disconnects from, the network, and the consumer's message acceptance
criteria), and route each message only along network paths that lead to a
consumer of that message. In various embodiments, consumers supply
message routing criteria to the local broker to which they are connected
(or conversely, disconnect from the network, which causes the removal of
message routing criteria for the disconnected consumer).

[0013] Brokers in the network coordinate with each other to apply the
routing criteria of a destination broker to a source broker, so that any
message that would match one of these routing criteria is routed to the
destination broker. If routing criteria are added to or removed from the
destination broker, these changes are propagated to all connected brokers
throughout the network. When a destination broker removes a criteria that
allows a specified type of message to pass, the connected brokers follow
suit and no longer incur the overhead or security risks of transferring
messages that match that criteria.

[0014] According to various embodiments, systems, methods, and
computer-readable media are provided for routing messages in a messaging
network. The embodiments perform operations including maintaining routing
information for each of a plurality of message consumers connected to the
messaging network, receiving a message, comparing an attribute of the
message to the routing information for each of the plurality message
consumer connected to the messaging network, determining, based on the
result of the comparison, (e.g., a match), whether there is a broker that
is connected to a message consumer of the plurality of messages consumers
that can receive the message, and routing the message to the broker that
was determined only if the broker is connected to the message consumer
that can receive the message.

[0015] Further embodiments provide additional functionality, including
functionality for determining, (based on the results of the comparison
between the attribute of the message and the routing information),
whether there is a message consumer of the plurality of message consumers
that is directly connected to the computing system that can receive the
message, and routing, by the computing system, the message to the message
consumer that was determined only if the message consumer can receive the
message.

[0016] Still other embodiments are implemented such that the attribute of
the message comprises metadata associated with the message. In other
embodiments, the metadata associated with the message comprises a topic
assigned to the message by a producer of the message. In various
embodiments, the message includes content, and the attribute of the
message comprises information in the content of the message, or the
message includes content; and the routing information comprises
information that must match corresponding information in the content of
the message, wherein the information that must match is specified by the
message consumer. In some embodiments, the operation of maintaining
routing information for each message consumer comprises updating the
routing information for a message consumer of the plurality of message
consumers that changes a connection status with the messaging network.

[0017] Referring now to the drawings, FIG. 1 is a diagram showing a
network of brokers 100 demonstrating prior art message processing. As
shown, network 100 is formed of interconnected brokers, including broker
1 140, which is connected to broker 2 120 and broker 5 150. Broker 2 140
is connected to broker 3 110 and broker 4 130. Broker 5 150 is connected
to broker 6 160 and broker 7 170.

[0018] As shown, a producer 105 of messages is connected to broker 3 110.
In various networks, producer 105 may be a data processing system, such
as a laptop or desktop computer, operated by a user, which sends
messages. In other networks, producer 110 may be an application or
software program running on a data processing system, which sends
messages. There is also a consumer 135 connected to network 100 via
broker 4 130. Consumer 135 may be a data processing system, such as a
laptop or desk top computer, operated by a user, which may receive
messages from producer 105. Alternatively, consumer 135 may be an
application or software program running on a data processing system,
which receives messages from producer 105.

[0019] Consumer 135 may use a message-matching criteria 137, (such as a
binding key in an advanced message queuing protocol (AMQP)
implementation) to subscribe to messages published to messaging network
100. The message-matching criteria 137 informs broker 4 130 which
messages to provide to consumer 135, such as messages that include a
routing key (in an AMQP implementation) that matches message-matching
criteria 137. Thus, in conventional messaging systems such as system 100,
only the local broker that a message consumer is directly connected to
(in this case, broker 4 130) knows the message acceptance criteria
provided by the message consumer. The other brokers in the network are
not provided with this information.

[0020]FIG. 1 represents a typical publish and subscribe messaging system
implemented on network 100. In a publish and subscribe system, senders of
messages (e.g., producer 105) do not specify that messages are to be sent
directly to any specific receiver(s) (e.g consumer 135). Instead,
published messages are distributed without knowledge by the producer 105
of what, if any, subscribers, such as consumer 135, there may be. In many
cases, a publisher may attach a label to each message that characterizes
the message as belonging to a specific class or topic. Subscribers may
express interest in one or more topic, for example by specifying the
topic using message-matching criteria 137, and subscribers only receive
messages that are of interest, without knowledge of what, if any,
publishers or producers there are.

[0021] In the example shown in FIG. 1, producer 105 sends a message 180
into network 100 via broker 3 110. Because brokers, like producers, do
not know what, if any, consumers of message 180 are connected to network
100, brokers simply distribute messages to all other brokers in the
network, in case any of them may have an appropriate consumer connected
to it. To implement the distribution, broker 3 110 sends message 180 to
all the brokers (and any subscribed consumers) connected to it--in this
case, to broker 2 120. Broker 2 120, in turn, then distributes message
180 to all brokers connected to it--in this case, broker 4 130 and broker
1 140. Broker 1 140 sends message 180 to broker 5 150, which in turn
distributes copies of message 180 to broker 6 160 and broker 7 170.

[0022] As each broker receives message 180, it checks whether or not there
is a consumer connected to it that has subscribed to receive message 180.
If a broker has no consumer for message 180, such as broker 6 160 or
broker 7 170 in FIG. 1, then the broker discards message 180. If, on the
other hand, a broker does have a consumer that has subscribed to receive
message 180, then the broker provides message 180 to the consumer. In the
example of FIG. 1, broker 4 130 is connected to consumer 135, which has
subscribed to receive a copy of message 180 by specifying criteria in
message-matching criteria 137 that cause broker 4 130 to route message
180 to consumer 135.

[0023] As illustrated by the example of FIG. 1, a conventional messaging
system does not restrict the distribution of messages. A message is
distributed to every broker node in network 100 in order to make sure
that the message gets to every broker node where a consumer may be
attached. This system uses the destination broker nodes to delete
unconsumed messages after the message gets to the node.

[0024] There are, however, several drawbacks to this conventional system
for distributing messages. First, this system wastes bandwidth
unnecessarily. As shown in FIG. 1, distributing copies of message 180
from broker 2 120 among broker 1 140, broker 5 150, broker6 160, and
broker 7 170 unnecessarily uses the bandwidth between these brokers, as
well as the computing and storage resources of the brokers themselves,
because there are no consumers for message 180 connected to that portion
of network 100. Another drawback is related to security. Creating and
passing unneeded copies of message 180 to broker 1 140, broker 5 150,
broker 6 160, and broker 7 170 increases the risk that message 180 will
be intercepted or otherwise compromised in transit between brokers or
while temporarily stored on a broker before being forwarded to another
broker or deleted.

[0025] FIGS. 2a-2c are diagrams showing a network 200 of message brokers
illustrating an exemplary messaging system consistent with embodiments of
the invention, which does not suffer the aforementioned drawbacks. In the
embodiment shown in FIGS. 2a-2c, the brokers of network 200 are
configured to implement a publish/subscribe messaging system that
dynamically routes a given message only along paths that lead to a
consumer(s) of that message. U.S. patent application Ser. No. ______
entitled "Systems and Methods for Identifying Linked Message Brokers in a
Dynamic Routing Network," by Theodore Ross filed on ______, 2011 with
attorney docket number 0040.0878, (which is hereby incorporated by
reference in its entirety), describes in detail embodiments of brokers
that are configured to route a given messages only along paths that lead
to a consumer(s) of that message.

[0026] As shown in FIG. 2a, and similar to FIG. 1, network 200 is formed
of interconnected brokers, including broker 1 140, which is connected to
broker 2 120 and broker 5 150. Broker 2 140 is connected to broker 3 110
and broker 4 130. Broker 5 150 is connected to broker 6 160 and broker 7
170.

[0027] As shown, a producer 105 of messages is connected to broker 3 110.
In various networks, producer 105 may be a data processing system, such a
laptop or desk top computer, operated by a user, which sends messages. In
other networks, producer 110 may be an application or software program
running on a data processing system, which sends messages. In the
scenario depicted in FIG. 2a, producer 105 publishes a message 280 to
broker 3 110 for distribution throughout network 200 when there are no
consumers (i.e., subscribers) of message 280 currently connected to
network 200. As mentioned previously, in a publish and subscribe system,
message senders (e.g., producer 105) do not specify who the receiver(s)
of a message should be. Instead, a message sender publishes messages
without any knowledge of who the subscribers are on the network and
without knowledge of whether there any subscribers at all on the network.

[0028] As shown in the scenario depicted in FIG. 2a, and unlike
conventional network 100, when producer 105 publishes message 280 to
broker 3 110, broker 3 110 does not transmit a copy of message 280 to any
other brokers in network 200 because none of the other brokers in network
200 is connected to a consumer that subscribes to message 280. In one
embodiment according to this scenario, broker 3 110 discards message 280
undelivered to any consumer.

[0029] Referring now to FIG. 2b, the same network 200 is shown. In the
scenario shown in FIG. 2b, a message consumer 135 has connected to broker
4 130. Consumer 135 may be a data processing system, such as a laptop or
desktop computer, operated by a user, which may receive appropriate
messages from producer 105. Alternatively, consumer 135 may be an
application or software program running on a data processing system,
which may receive appropriate messages from producer 105. Consumer 135
provides message-matching criteria 137 to broker 130. Message-matching
criteria 137 specifies attributes or characteristics of messages that
consumer 135 will receive. In other words, message-matching criteria 137
defines the messages consumer 135 wants to receive and will consume
(i.e., the messages that consumer 135 is subscribing to).

[0031] As message-matching criteria 137 propagates through network 200,
the brokers in network 200 configure themselves (e.g., by modifying their
routing information) to forward messages that they receive and that
correspond to message-matching criteria 137 toward consumer 135. This is
represented in FIG. 2b by the arrows near each broker accompanied by the
triangle representing message-matching criteria 137. As noted above, the
process of propagating message-matching criteria throughout the network
and configuring the brokers to route messages only along network paths
that lead to appropriate consumers is described in detail in the U.S.
patent application entitled "Systems and Methods for Identifying Linked
Message Brokers in a Dynamic Routing Network," by Theodore Ross filed on
______, 2011 with attorney docket number 0040.0878, (which is
incorporated herein by reference).

[0033] When broker 4 130 receives message 285, it determines whether
message 285 matches message-matching criteria 137 associated with
consumer 135. Upon determining that message 285 corresponds to
message-matching criteria 137, broker 4 130 provides message 285 to
consumer 135. As exemplified by the scenario of FIG. 2c, network 200
routes a message exclusively to broker nodes that lead to a currently
connected consumer of the message at the time that the message is passing
through the broker node.

[0034] In some embodiments, messaging network 200 may be implemented as a
direct matching system, wherein metadata associated with message 285,
and/or data in the contents of message 285, must exactly match the
message-matching criteria 137 in order to be routed to consumer 135.
Metadata may include information in, for example, a routing key(s)
attached to a message or information in a header or in a property field
that provides an "envelope" for the contents of a message. In various
embodiments, message-matching criteria 137 may specify the value or
information that must be matched in order to route a message, and specify
where to find the relevant value or information--e.g., in a particular
header, in a particular property field, in a specific portion of the
message contents, etc. In other words, message-matching criteria 137
informs a broker where to look (e.g., routing key, message header,
message contents, etc.) to find the information needed to route the
message, as well as what to look for (e.g., what the value of field must
be to match).

[0035] In some embodiments, the publisher of a message (e.g., producer
105) can insert particular attributes into the metadata or contents of a
given message (e.g., message 285) to ensure that only a specific intended
recipient (or recipients) receives the message, and to ensure that the
message is not distributed to portions of the messaging network that are
not connected, either directly or indirectly, to the intended recipient.
For example, producer 105 may insert a unique identification number into
the metadata of message 285, wherein the unique identification number is
known only to consumer 135, and wherein consumer 135 uses the unique
identification number in message-matching criteria 137. In this example,
as shown in FIG. 2c, message 285 will be routed only from broker 3 110 to
broker 2 120 to broker 4 130 to consumer 135 because only consumer 135
has configured message-matching criteria 137 with the unique
identification number. Similarly, if a producer (not shown) connected to
message broker 5 150 and published a message (not shown) having the same
unique identification number from this example in its metadata, then that
message would be routed from broker 5 150 to broker 1 140 to broker 2 120
to broker 4 130 to consumer 135, without being routed to any other broker
nodes in network 200.

[0036] One of ordinary skill will recognize that the topology, producer
connections, consumer connections, and other details of messaging network
200 are exemplary and presented in the form shown for conciseness and
ease of illustration. Other components, topologies, connections, etc. may
be substituted for those shown without departing from the scope of the
invention. In addition, one of ordinary skill will recognize that for
implementations with two-way communications, consumer 135 may also be a
producer/publisher of messages bound for producer 105, and producer 105
may also be a consumer of messages published by consumer 135. In
addition, one of ordinary skill will recognize that messaging networks
consistent with the principles of the invention may be implemented by
adding functionality to or modifying known message-oriented middleware
systems, such as advanced message queuing protocol (AMQP) systems, RestMS
systems, Java Messaging Service (JMS), Microsoft Message Queue (MSMQ),
and Size-Prefixed Blob (SPB) systems, and the like.

[0037] FIGS. 3a-3c are diagrams showing a network 300 of message brokers
illustrating an exemplary messaging system consistent with embodiments of
the invention. In the embodiment shown in FIGS. 3a-3c, the brokers of
network 300 are configured to implement a publish/subscribe messaging
system that routes a given message only along paths that lead to a
consumer(s) of that message. In the example shown, network 300 consists
of message brokers as described with respect to the message brokers of
network 200 of FIGS. 2a-2c.

[0038] Referring now to FIG. 3a, network 300 includes a consumer 1 135
connected to broker 3 110 and a consumer 2 335 connected to broker 5 150.
Consumer 1 135 has used message-matching criteria 337 to subscribe to
messages published to network 300, and consumer 2 335 has used
message-matching criteria 338 to subscribe to messages published to
network 300. In this example, message-matching criteria 337 includes
subscription information that is used to identify a message, (for
example, a binding key in an AMQP-based implementation), which is
represented by the letter "A" in the triangle. Message-matching criteria
338 is similar.

[0039] In some embodiments, messaging network 300 may implement a
topic-based system, wherein a message producer publishes each messages
with "topic" metadata, which may, for example, be a field or attribute in
the message "envelope" (e.g., a message header) that identifies a topic
or category, (such as "weather") that describes the message. The
publisher is responsible for defining the topics, and subscribers can
subscribe to any topic provided by the publisher. Subscribers in a
topic-based system will receive all messages published to the topic(s) to
which they subscribe, and all subscribers to a topic will receive the
same messages. For example, in an AMQP-based implementation, a message
publisher (e.g., producer 105) may insert a topic word or words, such as
"weather" into a standard header in an AMQP-based message that is called
a routing key. Brokers in an AMQP network use the routing key header to
match messages to queues, which provide messages to other brokers and
subscribers (e.g. consumer 1 135). Each queue specifies a binding key
(e.g., message-matching criteria 337) and if the binding key matches the
value of the routing key header of a message, then the associated queue
receives the message, which is then available to the broker or subscriber
assigned to the queue.

[0040] In an embodiment as shown in FIG. 3a, where network 300 is
implemented as a topic-based messaging network, consumer 1 135 and
consumer 2 335 have subscribed to topic "A" as represented by
message-matching criteria 337 and message-matching criteria 338. As
previously explained with respect to FIG. 2b, when consumer 1 135 and
consumer 2 335 subscribed to topic "A," the corresponding
message-matching criteria 337 and message-matching criteria 338 were
propagated to each broker in network 300, and each broker was configured
to forward any messages matching topic "A" only along paths in network
300 that lead to consumer 1 135 and consumer 2 335, and not along paths
that do not lead to an appropriate consumer.

[0041] In the scenario shown in FIG. 3a, producer 105 publishes to broker
4 130 a message 380 with the topic attribute "A." Broker 4 130 forwards
message 380 to broker 2 120. Broker 2 120 routes copies of message 380 in
two directions--one copy of message 380 is provided to broker 3 110 and
another copy of message 380 is provided to broker 1 140. Upon receiving
message 380, broker 3 110 checks the topic attribute, and finds that the
topic is "A." Broker 3 110 then checks whether any consumers connected to
it have subscribed to topic "A." Because message-matching criteria 337
for consumer 1 135 indicates topic "A" is of interest to consumer 1 135,
there is a match, and broker 3 110 provides message 380 to consumer 1
135.

[0042] The other copy of message 380 sent by broker 2 120 is received by
broker 1 140. Broker 1 140 routes message 380 to broker 5 150 based on
its routing configuration, which was instigated when message-matching
criteria 338 was provided to broker 1 140 by broker 5 150 at the time of
subscription by consumer 2 335.

[0044] Broker 5 150 also checks its routing information to determine
whether to forward a copy of message 380 to broker 6 160 and/or broker 7
170. Because there are no consumers that have subscribed to topic "A"
connected to either of broker 6 160 or broker 7 170, the routing
information of broker 5 150 does not indicate that message 380 should be
routed to either of broker 6 160 or broker 7 170.

[0045] Although FIG. 3a has been described using the example of network
300 being implemented as a topic-based messaging system, one of ordinary
skill will recognize that network 300 may be implemented as a
content-based messaging system without departing from the principles of
the invention. In various embodiments of a content-based messaging
system, messages are only delivered to a subscriber if something in the
content of those messages matches a criteria or constraint(s) defined by
the subscriber. In a content-based messaging system the subscriber is
responsible for classifying the messages that the subscriber wishes to
receive. One of ordinary skill will further recognize that network 300
may also be implemented as some hybrid combination of a topic-based
messaging system and a content-based messaging system, without departing
from the principles of the invention.

[0046] Turning now to the scenario illustrated in FIG. 3b, in the
illustrated embodiment, network 300 is implemented as a hybrid
topic-based and content-based messaging network. In this embodiment,
publishers (e.g., message producer 105) post messages to a topic, while
subscribers (e.g., consumer 1 135 and consumer 2 335) register
content-based subscriptions to one or more topics. In the exemplary
scenario shown, consumer 1 135 has subscribed to topic "A" as represented
by message-matching criteria 337. Consumer 2 335 has subscribed to topic
"A" and further specified that he wishes to receive only messages
containing content "B," as represented by message-matching criteria 338.
As previously explained with respect to FIG. 2b, when consumer 1 135 and
consumer 2 335 subscribe with message-matching criteria 337 and
message-matching criteria 338, respectively, then message-matching
criteria 337 and message-matching criteria 338 are propagated to each
broker in network 300, and each broker is configured to forward any
messages corresponding to the message-matching criteria only along paths
in network 300 that lead to an appropriate consumer. In the exemplary
embodiment shown in FIG. 3b, the brokers of messaging network 300 will
forward messages having a topic that matches "A" along paths that lead to
consumer 1 135. Similarly, the brokers of messaging network 300 will
forward messages having a topic that matches "A" and having content that
matches "B" along paths that lead to consumer 2 335.

[0047] In the exemplary scenario illustrated in FIG. 3b, producer 105
publishes message 380, which is classified with topic "A," to network 300
via broker 4 130. In this scenario, the content of message 380 does not
contain information or an attribute (e.g., a specific word or number)
that matches "B." Upon receiving message 380, broker 4 130 forwards
message 380 to broker 2 120, as its routing information tells it that
broker 2 120 is connected, either directly or indirectly (in this case),
to a consumer that has subscribed to topic "A." Upon receiving message
380, broker 2 120 examines the topic of message 380 and routes message
380 to broker 3 110, as its routing information tells it that broker 3
110 is connected, either directly (in this case) or indirectly, to a
consumer that has subscribed to topic "A." Upon receiving message 380,
broker 3 110 examines the topic of message 380 and routes message 380 to
consumer 1 135, as its routing information tells it that consumer 1 135
has subscribed to topic "A," as indicated in message-matching criteria
337.

[0048] When broker 2 120 receives message 380 from broker 4, 130, broker 2
120 also examines the contents of message 380 to determine whether the
content matches "B." Because message 380 does not contain content that
matches "B," broker 2 120 does not forward message 380 to broker 1 140,
as its routing information indicates that only messages under topic "A"
and having content "B" are to be sent to broker 1 140.

[0049] Although FIG. 3b has been described using the example of network
300 being implemented as a hybrid messaging system that combines
characteristics of a topic-based system and content-based messaging
system, one of ordinary skill will recognize that network 300 may be
implemented as a content-based messaging system without departing from
the principles of the invention, wherein consumer 1 135 specifies a
single content attribute "A" in message-matching criteria 337, and
consumer 2 335 specifies two content attributes "A" and "B" in
message-matching criteria 338. One of ordinary skill will further
recognize that network 300 may also be implemented as a topic-based
messaging system without departing from the principles of the invention,
wherein consumer 1 135 specifies a single topic "A" in message-matching
criteria 337, and consumer 2 335 specifies two topics "A" and "B" in
message-matching criteria 338, and wherein message producer 105 may
produce messages classified with two or more topics.

[0050]FIG. 3c illustrates the same network configuration as FIG. 3b, but
in the illustrated scenario, producer 105 publishes a message 385 under
topic "A" and containing attribute "B" in the message content. As shown,
broker 4 130 received message 385 from producer 105 and forwards message
385 to broker 2 120, as the routing information of broker 4 130 tells it
that broker 2 120 is connected, either directly or indirectly (in this
case), to a consumer that has subscribed to topic "A" and to a consumer
that has subscribed to topic "A" in conjunction with content "B."

[0051] Upon receiving message 385, broker 2 120 examines the topic of
message 385 and routes message 385 to broker 3 110, as its routing
information tells it that broker 3 110 is connected, either directly (in
this case) or indirectly, to a consumer that has subscribed to topic "A."
Upon receiving message 385, broker 3 110 examines the topic of message
385 and routes message 385 to consumer 1 135, as its routing information
tells it that consumer 1 135 has subscribed to topic "A," as indicated in
message-matching criteria 337.

[0052] When broker 2 120 receives message 385 from broker 4 130, broker 2
120 also examines, (in addition to the topic), the contents of message
385 to determine whether the content matches "B." In the scenario of FIG.
3c, message 385 contains content that matches "B," and thus broker 2 120
forwards a copy of message 385 to broker 1 140, according to its routing
information, which indicates that there is consumer for messages
published under topic "A" and having content "B" connected to broker 1
140, either directly or indirectly (in this case).

[0053] Upon receiving message 385, broker 1 140 looks at the topic of
message 385 and the contents of message 385 and determines whether the
topic and content match any message routing criteria in its message
routing information. In this scenario, the routing information of broker
1 140 indicates that broker 5 150 is connected, either directly or
indirectly to a consumer that has subscribed to messages published under
topic "A" and having content "B." Accordingly, broker 1 140 sends message
385 to broker 5 150.

[0054] Upon receiving message 385, broker 5 150 performs a similar process
of examining the message topic and content, and determines that message
385 should be provided to consumer 2 335 because message-matching
criteria 338 set up by consumer 2 335 indicates a subscription to
messages under topic "A" and having content "B."

[0055] An example illustrating a simple use of this capability is the case
where producer 105 publishes messages under the topic "weather," where
the content of each message describes the weather forecast in various
geographic regions covered by message producer 105, such as Boston, New
York, Philadelphia, and Washington, D.C. In this example, consumer 2 335
may be located in Boston and connected locally to a server implementing
broker 5 150, which is also located in Boston. Because he is located in
Boston, consumer 2 335 may be interested only in weather messages related
to Boston and may not wish to receive weather messages related to New
York, Philadelphia, or Washington, D.C. To realize these restrictions,
consumer 2 335 may subscribe to messages with topic "weather" and further
specify that he only wishes to receive messages published to the weather
topic that also contain the word "Boston" in the message contents.

[0056] For example, in an AMQP-based implementation, consumer 2 335 may
connect to local broker 5 150 and create for itself a queue on broker 5
150 to receive messages. Consumer 2 335 supplies a key to bind their
queue to an AMQP-based topic exchange implemented by broker 5 150, where
the binding key may specify a topic, such as topic="weather*" and a
metadata match, such as content="Boston." Note that without further
specifying limiting conditions (i.e., the word "Boston" appearing in the
message contents), all messages published under the weather topic would
be forwarded to consumer 2 335, including unwanted weather messages
related to New York, Philadelphia, or Washington, D.C.

[0057] Also note that in addition to providing message 385 to consumer 2
335, broker 5 150 determines that it should not forward message 385 to
either of broker 6 160 or broker 7 170, because the routing information
does not indicate that either of broker 6 160 or broker 7 170 has an
appropriate consumer connected to it. Thus, no resources are wasted
sending messages that will not be consumed to broker 6 160 and broker 7
170.

[0058] One of ordinary skill will recognize that the topology, producer
connections, consumer connections, and other details of messaging network
300 are exemplary and presented in the form shown for conciseness and
ease of illustration. Other components, topologies, connections, etc. may
be substituted for those shown without departing from the scope of the
invention. In addition, one of ordinary skill will recognize that two-way
communications may be implemented between message producers and message
consumers without departing from the scope of the invention. In addition,
one of ordinary skill will recognize that the implementation examples
mentioned in the context of an improved AMQP-based messaging network may
just as readily be implemented in the context of improvements to other
types of message-oriented middleware systems, such as, for example,
RestMS systems, Java Messaging Service (JMS), Microsoft Message Queue
(MSMQ), Size-Prefixed Blob (SPB) systems, and the like.

[0059]FIG. 4 is a flowchart showing an exemplary process 400 for routing
messages from one broker to another, consistent with embodiments of the
invention. In various embodiments, process 400 may be implemented by a
server computer, or other data processing system, functioning as a
message broker, such as brokers 110, 120, 130 140, 150, 160, and 170 of
FIGS. 2 and 3. In the embodiment shown in FIG. 4, process 400 begins by
dynamically maintaining routing information based on message-matching
criteria for message consumers connected to a messaging network (stage
410). In various embodiments, dynamically maintaining the routing
information may include storing 1) information representing the location
and/or direction where each message consumer is connected to the network
(e.g., the broker to which a consumer is connected), and 2) information
representing messages the consumer would like to receive (e.g., the
message-matching criteria, message subscription information, etc.
provided by the consumer). Dynamically maintaining the routing
information may also include updating the stored information whenever a
message consumer changes its status (e.g., when a consumer connects or
disconnects from the messaging network, when a consumer adds, deletes, or
revises message-matching data, etc.). In various embodiments, the routing
information for a broker indicates which directly connected brokers are
themselves connected, either directly or indirectly via one or more hops,
to a consumer that has registered or subscribed to receive messages
having specific properties, characteristics, or attributes, such as
specific topics and/or specific associated metadata information.
Exemplary details related to stage 410 are described in the U.S. patent
application entitled "Systems and Methods for Identifying Linked Message
Brokers in a Dynamic Routing Network," by Theodore Ross filed on ______,
2011 with attorney docket number 0040.0878, (which is incorporated herein
by reference in its entirety), and in U.S. patent application Ser. No.
______ entitled "Systems and Methods for Providing Distributed Dynamic
Routing Using a Logical Broker," by Theodore Ross filed on ______, 2011
with attorney docket number 0040.0876, (which is hereby incorporated by
reference in its entirety), which describes in detail embodiments of
dynamically routed messaging systems and messaging networks that provide
a single logical broker for a message consumer, regardless of where the
consumer connects to the system or network.

[0060] Process 400 continues by receiving a message (stage 420). The
message may be received, for example, from a message producer (e.g.,
message producer 105) or from another broker.

[0061] At stage 430, a loop begins wherein the entity implementing process
400, such as a message broker, seeks to route the message to a broker or
brokers that are directly connected to it, but only if the directly
connected broker is itself currently connected, either directly or
indirectly, to a consumer for the message. To this end, at stage 440,
process 400 compares the attributes of the received message to the
routing information for the directly connected broker that is currently
being considered in the loop.

[0062] If the attributes of the message do not match the routing
information for the directly connected broker that is currently being
considered in the loop (stage 450, No), then process 400 proceeds to
stage 470 and determines whether all the directly connected brokers have
been processed, and if not (stage 470, No), then the loop continues by
considering another directly connected broker.

[0063] If, on the other hand, the attributes of the received message do
match the routing information for the directly connected broker that is
currently being considered in the loop (stage 450, Yes), then process 400
forwards the message to that directly connected broker (stage 460).

[0064] In some embodiments, the attributes of the received message may be
implemented in the form of metadata that accompanies a message, so that
the metadata is used by each broker to decide where to route the message.
For example, in an AMQP-based implementation, the metadata may be in the
form of a routing key or keys attached to the content of a message, which
is compared to routing information in the form of binding keys to
determine a match that causes the message to be moved to particular
output queues. In other implementations, the metadata may be in the form
of information, data, or values in a header, or a field of a header, that
is attached to the content of message. In yet other embodiments, the
attributes of the received message may be implemented in the form of
metadata that is in the content or body of the message. For example, a
specific word or words may be placed in the contents of a message, and
the broker may parse or analyze the message content to determine whether
a word matching the routing information is present. For another example,
an XML specification or XML document in the message content may contain
information that is used by brokers to route the message according to
routing information that is dynamically maintained by each broker.

[0065] Next, as noted above, stage 470 determines whether all the directly
connected brokers have been processed. If not, process 400 continues by
looping back to stage 430. And if so, process 400 ends.

[0066] One of ordinary skill will recognize that stages may be added to,
deleted from, or modified within process 400 without departing from the
principles of the invention. For example, additional processing stages
may be added to compare attributes of the message to the routing
information, (which is based on the message-matching criteria), for a
consumer(s) that is directly connected to the broker, and if there is a
match, then to provide the message to the matching consumer(s).

[0067]FIG. 5 is a block diagram of an exemplary computing system or data
processing system 500 that may be used to implement embodiments
consistent with the invention, such as for example, embodiments of
messaging brokers, consumers and/or producers. The exact components and
arrangement, however, are not critical to the invention. Computing system
500 includes a number of components, such as a central processing unit
(CPU) 505, a memory 510, an input/output (I/O) device(s) 525, and a
nonvolatile storage device 520. System 500 can be implemented in various
ways. For example, an implementation as an integrated platform (such as a
workstation, personal computer, laptop, etc.) may comprise CPU 505,
memory 510, nonvolatile storage 520, and I/O devices 525. In such a
configuration, components 505, 510, 520, and 525 may connect and
communicate through a local data bus and may access a database 580
(implemented, for example, as a separate database system) via an external
I/O connection. I/O component(s) 525 may connect to external devices
through a direct communication link (e.g., a hardwired or local wifi
connection), through a network, such as a local area network (LAN) or a
wide area network (WAN) and/or through other suitable connections. System
500 may be standalone or it may be a subsystem of a larger system.

[0068] CPU 505 may be one or more known processors or processing devices,
such as a microprocessor from the Core® 2 family manufactured by
Intel® Corporation (San Jose, Calif.) or the Athlon® family
manufactured by AMD® Corporation (Sunnyvale, Calif.). Memory 510 may
be one or more fast storage devices configured to store instructions and
information used by CPU 505 to perform certain functions and processes
related to embodiments of the present invention. Storage 520 may be a
volatile or non-volatile, magnetic, semiconductor, tape, optical, or
other type of storage device or computer-readable medium, including
devices meant for long-term storage.

[0069] In the illustrated embodiment, memory 510 contains one or more
programs or subprograms 515 loaded from storage 520 that, when executed
by CPU 505, perform various procedures, processes, or methods consistent
with the present invention. Alternatively, CPU 505 may execute one or
more programs located remotely from system 500. For example, system 500
may access one or more remote programs via a network 535 that, when
executed, perform functions and processes related to or implementing
embodiments of the present invention.

[0070] In one embodiment, memory 510 may include a computer program 515
that implements process 400. Memory 510 may also include other programs
or applications that implement other methods and processes that provide
ancillary functionality for a broker, consumer, or producer.

[0071] Methods and systems consistent with the invention are not limited
to programs or computers configured to perform dedicated tasks. For
example, memory 510 may be configured with a program 515 that performs
several functions when executed by CPU 505. For example, memory 510 may
include a single program 515 that implements both process 400 and the
functionality of a message producer or the functionality of a network
manager.

[0072] Memory 510 may be also be configured with other programs (not
shown) unrelated to the invention and/or an operating system (not shown)
that performs several functions well known in the art when executed by
CPU 505. By way of example, the operating system may be Microsoft
Windows®, UniX®, Linux®, an Apple Computers® operating
system, Personal Digital Assistant operating system such as Microsoft
CE®, or other operating system. The choice of operating system, and
even to the use of an operating system, is not critical to the invention.

[0073] I/O device(s) 525 may comprise one or more input/output devices
that allow data to be received and/or transmitted by system 500. For
example, I/O device 525 may include one or more input devices, such as a
keyboard, touch screen, mouse, and the like, that enable data to be input
from a user, such as a system operator. Further, I/O device 525 may
include one or more output devices, such as a display screen, CRT
monitor, LCD monitor, plasma display, printer, speaker devices, and the
like, that enable data to be output or presented to a user. I/O device
525 may also include one or more digital and/or analog communication
input/output devices that allow computing system 500 to communicate,
preferably digitally, with other machines, computing systems and devices,
such as network communication ports, etc. The configuration and number of
input and/or output devices incorporated in I/O device 525 are not
critical to the invention.

[0074] In the embodiment shown, system 500 is connected to a network 535
(e.g., the Internet or a private network), which may in turn be connected
to various systems and computing machines (not shown), such as computers
that are brokers, consumers, or producers. In general, system 500 may
input data (including messages) from external machines and devices and
output data (including messages) to external machines and devices via
network 535.

[0075] In the exemplary embodiment shown in FIG. 5, database 530 is a
standalone database external to system 500. In other embodiments,
database 530 may be hosted by system 500. In various embodiments,
database 530 may manage and store data used to implement systems and
methods consistent with the invention. For example, database 530 may
manage and store data structures that contain subscription information,
message-matching criteria, routing information, link information, network
connection information, and the like.

[0076] Database 530 may comprise one or more databases that store
information and are accessed and/or managed through system 500. By way of
example, database 530 may be an Oracle® database, a Sybase®
database, or other relational database. Systems and methods consistent
with the invention, however, are not limited to separate data structures
or databases, or even to the use of a database or data structure.

[0077] The foregoing description is illustrative, and variations in
configuration, implementation, and embodiment of the invention will be
apparent to those skilled in the art from consideration of the
specification and practice of the invention disclosed herein. It is
intended that the specification and examples be considered as exemplary
only, with a true scope of the invention being indicated by the following
claims.