The DNS SRV record provides a convenient and well known mechanism to configure active-active, load balanced clusters and to provide failover information.
It is convenient for many people because they already have DNS servers usually.
DNS SRV also allows port numbers to be advertised.
The clustering support using UDP multicast doesn't work for all sites, especially where the user is more concerned with failover than load-balancing.
A specific DNS SRV implementation may involve some or all of the following:
- clients discovering a HornetQ, JNDI or STOMP host and port
- servers dynamically deciding which IPs and ports to bind to by checking DNS SRV records
- servers dynamically deciding which other servers to cluster with by checking for DNS SRV records
DNS SRV records may look like this:
_stomp._tcp.test-mq.example.org. IN SRV 1 50 5566 testmqhost1.example.org.
_stomp._tcp.test-mq.example.org. IN SRV 2 50 5566 testmqbackup.example.org.
A STOMP client would then be configured with just the domain name "test-mq.example.org" and it would dynamically discover the hosts and ports from DNS