6.6. 配置动态发现


您可以配置 AMQ 核心协议 JMS,在尝试建立连接时发现代理列表。

如果您在客户端上使用 JNDI 来查找您的 JMS 连接工厂实例,您可以在 JNDI 上下文环境中指定这些参数。通常,参数在名为 jndi.properties 的文件中定义。连接工厂的主机和部分应与代理 broker.xml 配置文件中的对应 broadcast-group 中的 group-addressgroup-port 匹配。以下是配置为连接到代理发现组的 jndi.properties 文件示例。

java.naming.factory.initial = ActiveMQInitialContextFactory
connectionFactory.myConnectionFactory=udp://231.7.7.7:9876
Copy to Clipboard Toggle word wrap

当此连接工厂由客户端应用从 JNDI 下载并且从其中创建 JMS 连接时,这些连接将在发现组通过侦听代理发现组配置中指定的多播地址的服务器列表中进行负载均衡。

作为使用 JNDI 的替代方案,您可以在创建 JMS 连接工厂时直接在 Java 代码中指定发现组参数。下面的代码提供了一个如何执行此操作的示例。

final String groupAddress = "231.7.7.7";
final int groupPort = 9876;

DiscoveryGroupConfiguration discoveryGroupConfiguration = new DiscoveryGroupConfiguration();
UDPBroadcastEndpointFactory udpBroadcastEndpointFactory = new UDPBroadcastEndpointFactory();
udpBroadcastEndpointFactory.setGroupAddress(groupAddress).setGroupPort(groupPort);
discoveryGroupConfiguration.setBroadcastEndpointFactory(udpBroadcastEndpointFactory);

ConnectionFactory jmsConnectionFactory = ActiveMQJMSClient.createConnectionFactoryWithHA
    (discoveryGroupConfiguration, JMSFactoryType.CF);

Connection jmsConnection1 = jmsConnectionFactory.createConnection();
Connection jmsConnection2 = jmsConnectionFactory.createConnection();
Copy to Clipboard Toggle word wrap

刷新超时可以使用 setter 方法 setRefreshTimeout() 直接在 DiscoveryGroupConfiguration 上设置。默认值为 10000 毫秒。

在首次使用时,连接工厂将确保它在创建此时间之后再创建第一个连接前等待。默认等待时间为 10000 毫秒,但您可以通过将新值传递给 DiscoveryGroupConfiguration.setDiscoveryInitialWaitTimeout() 来更改。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部