activeMQ静态链接

activeMQ的网络连接

两个Brokers是通过一个static的协议来网络链接的。一个consumer链接到brokerB的一个地址上,
当Producer 在brokerA以相同的地址发送消息时,此时他将转移到brokerB上,也就是brokerA的消息会
到BrokerB上

可以配置的属性

  1. name:默认为bridge
  2. decreaseNetworkConsumerPriority:默认为false。设置消费者的优先权,
    如果为true,网络的消费者优先级降低为-5.如果为false,默认和本地消费者一样为0
    实际情况下,配置网络连接的brokerB能够消费更多的消息

  3. conduitSubScriptions: 默认true,是否将同一个broker的多个consumer当作一个处理

  4. dynamicallyIncludedDestinations: 默认为空,要包括的动态消息地址。
    <dynamicallyIncludeDestionations>
    <queue physicalName="include.test.foo">
    <dynamicallyIncludeDestionations>

  5. staticallyIncludeDestionations:默认为空,要包括的静态消息地址.
    <staticallyIncludeDestionations>
    <queue physicalName="include.test.queue">
    </staticallyIncludeDestionations>

  6. excludedDestionations:默认为空,指定排除的地址

    <networkConnectors>
    <networkConnector uri="static://(tcp://localhost:61617)" name="bridge" dynamicOnly="false" conduitSubscriptions="true" decreaseNetworkConsumerPriority="false">
    <excludedDestinations>
    <queue physicalName="exclude.test.foo"/>
    <topic physicalName="exclude.test.bar"/>
    </excludedDestinations>
    <dynamicallyIncludedDestinations>
    <queue physicalName="include.test.foo"/>
    <topic physicalName="include.test.bar"/>
    </dynamicallyIncludedDestinations>
    <staticallyIncludedDestinations>
    <queue physicalName="always.include.queue"/>
    <topic physicalName="always.include.topic"/>
    </staticallyIncludedDestinations> </networkConnector>
    </networkConnectors>

  7. duplex: 模式为false,设置是否为双向通信

静态网络链接出现的问题

又这样的场景,broker1 和 broker2通过networkConnector链接,一些consumers链接到broker1,
消费broker2的消息,消息先被broker1从broker2消费掉,然后转发给consumers.不幸的是转发消息的时候,broker1重启了,这些consumers发现broker1链接不上,通过failover链接到broker2,但是一部分消息还木有消费的消息已经分发到broker2上,这些消息,就好像消失啦一样,除非有消费者重新连接到broker1上消费。

从5.6起,在destionationPolicy上新增的选项replyWhenNOConsumers。这个选项使得broker1傻姑娘有需要转发的消息但是木有消费者的时候,吧消息回流到原始的broker,同时吧enableAudit设置为false,未来防止消息回流后被当做重复消息儿不被分发。

<destinationPolicy>
    <policyMap>
          <policyEntries>
<policyEntry queue=">" enableAudit="false"> <networkBridgeFilterFactory>
<conditionalNetworkBridgeFilterFactory replayWhenNoConsumers="true"/> </networkBridgeFilterFactory>
                     </policyEntry>
          </policyEntries>
    </policyMap>
</destinationPolicy>

容错的链接

如果consumer连接到broker,如果broker链接怎么办?此时,Clientyou两种选项,要么立刻死掉,要么连接到其他的broker上。

Failover(故障转移)协议实现啦自动重新链接的逻辑,有两种方式提供啦稳定的brokers列表对于Client链接。
1. 提供一个静态的可用的brokers列表
2. 提供一个dynamic发现的可用的broker列表

容错的配置

failover:(uri1,…,uriN)?key=value

容错的属性配置
  1. initialReconnectDelay:第一次尝试重新连接等待的毫秒时间
  2. maxReconnectDelay:最长的重新连接的时间间隔
  3. userExponentialBackOff:重新连接的时间间隔是否以指数形式增长
  4. maxReconnectionAttempts: 0为默认值,表示不限制重试次数
    如果为大于0表示重试的次数
  5. randomize: 使用随机连接,以达到敷在均衡的目的,默认为true
  6. updateURIsSupported: 设定是否可以动态修改broker uri,默认为true
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值