20.11.3.3. 为 Java Messaging Service (JMS) 客户配置发现组

您可以为 JMS 和核心客户端程序配置发现组。您可以在服务器配置文件(standalone.xmldomain.xml)里指定用于 JMS 连接工厂的发现组。
<connection-factory name="ConnectionFactory">
 <discovery-group-ref discovery-group-name="my-discovery-group"/>
  <entries>
    <entry name="ConnectionFactory"/>
  </entries>
</connection-factory>

discovery-group-ref 元素用于指定发现组的名称。当客户应用程序从 JNDI 下载这个连接工厂并创建 JMS 连接时,这些连接将通过侦听在发现组配置里指定的多点传送地址在发现组维护的所有服务器上进行负载平衡。
如果您在使用 JMS 而不时 JNDI 来查找连接工厂时,您可以在创建 JMS 连接工厂时直接指定发现组参数:
final String groupAddress = "231.7.7.7";
final int groupPort = 9876;
ConnectionFactory jmsConnectionFactory = HornetQJMSClient.createConnectionFactory(new DiscoveryGroupConfiguration(groupAddress, groupPort, new UDPBroadcastGroupConfiguration(groupAddress, groupPort, null, -1)), JMSFactoryType.CF);
Connection jmsConnection1 = jmsConnectionFactory.createConnection();
Connection jmsConnection2 = jmsConnectionFactory.createConnection();

refresh-timeout 属性的默认值可以通过 setter 方法 setDiscoveryRefreshTimeout() 在 DiscoveryGroupConfiguration 上进行设置。你可以用 DiscoveryGroupConfiguration 上的 setDiscoveryInitialWaitTimeout() 方法来指定连接工厂在创建第一个连接前等待的时间。
这样可以确保连接工厂有足够的时间来从群集里所有的节点接收广播。这个参数的默认值是 10,000 毫秒。