A system for dynamic message routing on a topic between publishing nodes
and subscribing nodes includes a plurality of message queues, at least
one topic/node table, a subscribing module, a publishing module, and
other modules to send messages between one or more publisher and one or
more subscribers. These modules are coupled together by a bus in a
plurality of nodes and provide for the dynamic message routing on a topic
between publishing nodes and subscribing nodes. The message queues store
messages at each node for delivery to subscribers local to that node. The
topic/node table lists which clients subscribe to which topics, and is
used by the other modules to ensure proper distribution of messages. The
subscribing module is use to establish a subscription to a topic for that
node. The publishing module is used to identify subscribers to a topic
and transmit messages to subscribers dynamically. The other modules
include various devices to optimize message communication in a
publish/subscribe architecture operating on a distributed computing
system. The present invention also includes a number of novel methods
including: a method for publishing a message on a topic, a method for
forwarding a message on a topic, a method for subscribing to messages on
a topic, a method for automatically removing subscribers, a method for
direct publishing of messages, and methods for optimizing message
transmission between nodes.