ActiveMQ学习笔记(十三)集群下消息回流功能

一、简介

1.1 “丢失”的消息

有这样的场景,broker1和broker2通过networkConnector连接,一些consumers连接到broker1,消费broker2上的消息。消息先被broker1从broker2上消费掉,

然后转发给这些consumers。不幸的是转发部分消息的时候broker1重启了,这些consumers发现broker1连接失败,通过failover连接到broker2上去了,但是

有一部分他们还没有消费的消息被broker2已经分发到了broker1上去了。这些消息,就好像是消失了,除非有消费者重新连接到broker1上来消费。怎么办呢?

 

丢失现象测试:

  1、在61616上发出30个消息,然后在61676上接收3个消息,结果消息全转到61676上来了

     wKioL1j0iw2RbaKwAAFMjrbTDjA908.png

        wKioL1j0i4bD_m0sAAGGhGCF370145.png

  2、再在61616上接收消息时,接收不到了:

         wKiom1j0i-PhaEBVAAA6_G5Bgow350.png

 

从5.6版起,在destinationPolicy上新增的选项replayWhenNoConsumers。这个选项使得broker1上有需要转发的消息但是没有消费者时,把消息回流到它原始

的broker。同时把enableAudit设置为false,为了防止消息回流后被当做重复消息而不被分发,示例如下:在activemq.xml下的<policyEntries>下

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

注意:这个配置在61616和61676上都要配置才可以

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值