Azure Service Bus
The primary purpose of the Windows Azure Service Bus is to relay messages through the cloud in order to support application connectivity. The Service Bus gets its name from the Enterprise Service Bus (ESB) Pattern. This ESB pattern defines a standards based integration model that combines Web Services, data transformation, messaging and intelligent routing. The ESB platform is used to coordinate the interaction of diverse applications. The Windows Azure Service Bus makes it possible to integrate third party services from Microsoft or other vendors. In addition, custom applications running inside of a firewall can utilize the Service Bus to connect to applications outside of the firewall.
The Azure Service Bus exposes an application’s services through an endpoint. Each endpoint is assigned a URI (Universal Resource Identifier), which is published using the service register. Endpoints can then be ‘discovered’ by clients that use the service register. Each endpoint provides a rendezvous address that can be used for communication. Some of the available communication types are listed below .
One-Way Messaging
With one-way messaging, a single on-site service registers with the Service Bus relay to “listen” for messages at a particular rendezvous address. Clients can then send messages to the Service Bus and they will be relayed to the registered service.
Publish/Subscribe Messaging
Publish/Subscribe messaging, also known as multicast messaging, is very similar to the one-way messaging described above. The difference is that Publish/Subscribe messaging allows multiple services to listen to the same Service Bus rendezvous address. When a client submits a message to this address, the relay will distribute the messages to all services that have registered.
Direct Connectivity
In addition to the relayed communication methods described above, the Service Bus also allows direct connectivity between clients and services. In this scenario, the relay is still used but the relay will attempt to connect the clients and services directly to one another. This is done through a port prediction algorithm and the purpose is to increase throughput.