First of all TIB Enterprise for JMS is the 'old' name. The product is now called Enterprise Message Service (EMS). This has been done because the server can also be used in non-Java environments.
Two points:
1) The EMS server itself can be load balanced
2) A subscriber / receiver can be load balanced
1) For a loadbalanced EMS server, the client's URL to connect and publish messages to the server will have multiple entries to connect, separated by '|' (pipe) symbol. Dependent on the nr. Of connections or byte-rate, a server is selected. Note: this metric needs to be set on the client to work! On the subscriber/receiver side, a client will connect to any of the EMS load balanced servers. To make sure that the messages are available on each server, a route needs to be configured between the servers.
2) For loadbalancing an EMS client, e.g. spread messages across client instances, a Queue can be used. Just connect multiple receivers to a Queue and the EMS server will send them in a round-robin way. When both server and client are loadbalanced, you probably wan to set the metric for either nr of connections / byte-rate on a receiver as well.
Note: Client loadbalancing can only be achieved using Queues. For Topics,
you need to set up a Topic to Queue bridge.
In Factories.conf you can set folloiwng for url parameters This string specifies the servers to which this factory creates connections: A single URL specifies a unique server. For example:
tcp://host1:8222
A pair of URLs separated by a comma specifies a pair of fault-tolerant servers. For example: tcp://host1:8222,tcp://backup1:8222
A set of URLs separated by vertical bars specifies a load balancing among those servers. For example: tcp://a:8222|tcp://b:8222|tcp://c:8222
You can combine load balancing with fault tolerance. For example: tcp://a1:8222,tcp://a2:8222|tcp://b1:8222,tcp://b2:8222
The load balancing operator (|) takes precedence over the fault-tolerance operator (,). This example defines two servers (a and b), each of which has a fault-tolerant backup. The client program checks the load on the primary a server and the primary b server, and connects to the one that has the smaller load.