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.
CROSS-REFERENCES TO RELATED APPLICATIONS
The present application claims priority from U.S. Provisional Patent Application Ser. No. 60/445,543, entitled "Dynamically Routing Messages Relating to a Topic of Interest between Publisher Nodes and Subscriber Nodes" filed on Feb. 6, 2003, which is incorporated herein by reference. The present application is a continuation-in-part of U.S. Utility patent application Ser. No. 10/304,992, entitled "Dynamically Routing Messages between Software Application Programs Using Named Routing Nodes and Named Message Queues" filed on Nov. 26, 2002 now U.S. Pat. No. 7,039,671, which is incorporated herein by reference in its entirety.