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 传输参考。