Fanout 传输参考

使用 ActiveMQ Classic > 配置传输 > ActiveMQ Classic 连接 URI > Fanout 传输参考

Fanout 传输

Fanout 传输在任何其他传输之上叠加了重新连接和复制逻辑。它利用 Discovery 传输来发现代理并复制命令到这些代理。

配置语法

fanout:(discoveryURI)?transportOptions

或者

fanout:discoveryURI
传输选项
选项名称 默认值 描述
initialReconnectDelay 10 第一次重新连接尝试之前的等待时间
maxReconnectDelay 30000 我们之间重新连接尝试的最大等待时间
useExponentialBackOff true 在重新连接尝试之间是否使用指数回退
backOffMultiplier 2 指数回退尝试中使用的指数
maxReconnectAttempts 0 如果非 0,则这是在将错误发送回客户端之前最大重新连接尝试次数
fanOutQueues false 如果设置为“true”,则命令会复制到队列以及主题
minAckCount 2 必须建立连接的代理的最小数量

“fanOutQueues”选项特定于 fanout 传输。默认情况下,fanout 不会将命令复制到队列;只有主题。因此,如果您想将消息发送命令扇出到多个代理上的多个队列,您需要将此选项设置为“true”。

默认情况下,客户端的 fanout 传输等待与 2 个代理建立连接,或配置的静态 TCP URI 的数量(如果超过 2 个)。在建立此数量的连接之前,客户端对 Connection.createSession() 的调用不会返回。例如,使用下面列出的 fanout 连接器生产者将等待 2 个代理运行,并与这两个代理建立连接。

fanout:(multicast://default)

另一个例子是使用以下 fanout 连接器的生产者。

fanout:(static:(tcp://127.0.0.1:61629,tcp://127.0.0.1:61639,tcp://127.0.0.1:61649))

在这种情况下,需要三个代理连接。但是,可以使用 minAckCount 传输选项覆盖此所需的连接数量。例如,此 fanout 连接器允许生产者在仅连接到一个代理后运行。

fanout:(multicast://default)?minAckCount=1

警告

不建议您将 fanout URI 用于消费者。此外,如果生产者在多个互相连接的代理之间扇出,那么在一个代理上的消费者非常有可能收到重复消息。

示例 URI
fanout:(static:(tcp://127.0.0.1:61616,tcp://remotehost:61616))?initialReconnectDelay=100

将参数应用于发现的传输

由于 Discovery 传输用于代理发现,因此传输参数将应用于发现的代理。请参阅 Discovery 传输参考

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