发现

功能 > 发现

发现代理

ActiveMQ Classic 使用名为 Discovery Agent 的抽象来检测远程服务,例如远程代理。我们可以使用发现来让 JMS 客户端自动检测要连接的消息代理,或者提供 代理网络

目前有两种类型的发现代理。

组播

Discovery 传输使用我们自己的基于组播的发现代理来查找要连接的 URI 列表。

有关更多信息,请参阅 Discovery 传输参考

Zeroconf

ZeroConf 是一种标准的发现规范,它使用 UDP / 组播来发现设备。它被 Apple 的 Rendezvous 服务使用。
我们使用 jmDNS 项目来实现 Zeroconf 规范以检测服务。这意味着其他 Zeroconf
基于工具可以与该发现代理一起使用。

要在代理中配置发现,您应该使用 XML 配置。以下是如何使用发现来创建 代理网络示例

如果您有一个或多个代理在运行,并且启用了 Zeroconf 发现,您可以使用 brokerURL 连接到代理

zeroconf:_activemq_development.

这将使用 Zeroconf 查找可用的代理,并且会随机选择一个代理,并且如果有多个代理在运行,则在断开连接时会自动故障转移。

LDAP 发现

ActiveMQ Classic 支持使用 LDAP 来发现代理。

有关更多详细信息,请参阅 LDAP 代理发现机制

尝试发现

如果您在单独的 shell 中运行以下命令,您将拥有 2 个代理自动发现自身,以及 2 个使用固定 URL 的客户端

maven -o server -Dconfig=src/test/org/activemq/usecases/receiver-zeroconf.xml
maven -o server -Dconfig=src/test/org/activemq/usecases/sender-zeroconf.xml
maven -o consumer -Durl=tcp://127.0.0.1:62002
maven -o producer -Durl=tcp://127.0.0.1:62001

如果您希望客户端使用发现来查找代理,请运行上面两个“server”语句中的任何一个(或两者),然后按如下方式运行生产者/消费者

maven -o consumer -Durl=zeroconf:_activemq.broker.development.
maven -o producer  -Durl=zeroconf:_activemq.broker.development.

传输 URL 的格式为

zeroconf:<serviceName>

其中 <serviceName> 是 Zeroconf 服务名称;它似乎以下划线 (_) 开头,并且必须以点 (.) 结尾。因此,我们可以使用此服务名称来区分开发、UAT 和生产代理 - 或者将它们分组到域等中。

发现和安全

在使用代理的自动发现时,攻击者可能能够伪装成合法代理,并通过这种方式捕获和/或操纵通过它的所有消息。

自动发现中是否包含安全设置来避免这种情况?

Apache、ActiveMQ、Apache ActiveMQ、Apache 羽毛徽标和 Apache ActiveMQ 项目徽标是 Apache 软件基金会的商标。版权所有 © 2024,Apache 软件基金会。根据 Apache 许可证 2.0 许可。