6.7. 配置静态发现
有时,您可能无法在您要使用的网络上使用 UDP。在这种情况下,您可以使用可能服务器的初始列表配置连接。这个列表只能是一个您知道的代理始终可用,或者至少一个可用的代理列表。
这并不意味着您必须知道所有服务器将要托管的位置。您可以将这些服务器配置为使用可靠的服务器连接。连接后,它们的连接详情将从服务器传播到客户端。
如果您在客户端上使用 JNDI 来查找您的 JMS 连接工厂实例,您可以在 JNDI 上下文环境中指定这些参数。通常,这些参数在名为 jndi.properties 的文件中定义。以下是一个 jndi.properties 文件示例,它提供静态代理列表,而不是使用动态发现。
java.naming.factory.initial=org.apache.activemq.artemis.jndi.ActiveMQInitialContextFactory
connectionFactory.myConnectionFactory=(tcp://myhost:61616,tcp://myhost2:61616)
当上述连接工厂被客户端使用时,其连接将在括号 () 中定义的代理列表中进行负载平衡。
如果您直接实例化 JMS 连接工厂,您可以在创建 JMS 连接工厂时明确指定连接器列表,如下例所示。
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("host", "myhost");
map.put("port", "61616");
TransportConfiguration broker1 = new TransportConfiguration
(NettyConnectorFactory.class.getName(), map);
HashMap<String, Object> map2 = new HashMap<String, Object>();
map2.put("host", "myhost2");
map2.put("port", "61617");
TransportConfiguration broker2 = new TransportConfiguration
(NettyConnectorFactory.class.getName(), map2);
ActiveMQConnectionFactory cf = ActiveMQJMSClient.createConnectionFactoryWithHA
(JMSFactoryType.CF, broker1, broker2);