In addition to providing a range of messaging capabilities, the message bus provides facilities for service registration and lookup, autostart of services, and distributed execution. A console client is used to examine and control the state of the message bus and monitor system activity. As illustrated in Figure 1, most messages fall into one of two primary classes. Requests may be either synchronous or asynchronous. A synchronous request is similar to a remote procedure call.
Clients subscribe to the classes of events they which to receive.
The message bus keeps track of the event subscription list for each client and uses it to construct a distribution list when broadcasting an event. In general a producer does not know what other clients, if any, may be consuming the events it generates. Events are inherently asynchronous. At the simplest level the message bus is responsible only for classifying messages by type and handling message distribution and delivery. The actual content of a message, that is the data contained in a message, is determined by the messaging protocol used by the clients.