ActiveMQ配置持久化消息的过期策略

为什么要配置这个策略

最近在开发中遇到一个问题,mq的生产者正常工作,此时消费端由于异常与mq失去连接,假如消费端失联时间较长会导致mq堆积大量消息,等下一次消费端连接上的时候会有大量消息涌入,如果处理不好会导致消费端直接内存溢出。所以我们希望如果mq消息在我们设定的时间内没有被消费就把它删掉,一方面也能缓解mq端的消息积压,释放压力。

配置过期策略

打开配置文件在conf目录下的activemq.xml

  • message过期自动删除配置
<broker xmlns="http://activemq.apache.org/schema/core" schedulePeriodForDestinationPurge="10000">
   	<destinationPolicy>
   	   <policyMap>
   	      <policyEntries>
   	         <policyEntry topic=">" expireMessagesPeriod="60000">
	             <deadLetterStrategy>
                     <sharedDeadLetterStrategy processExpired="false" />
  	             </deadLetterStrategy>
  	         </policyEntry>
   	      </policyEntries>
   	   </policyMap>
   	</destinationPolicy>     
</broker>

broker节点的destinationPolicy节点加入即可
标签processExpired="false"表示不保存过期消息到死信队列,处理手段为删除,为true则是保留。
标签expireMessagesPeriod="60000"属性表示每隔60秒钟检查message是否过期。
topic=">"表示该策略对所有topic都生效。而topic="active.>"就表示该策略对以active.开头的所有topic生效,注意有个点号。同理配置queue只需将topic改为queue即可。

  • message过期时间设置
<borker>
   	<plugins>
   	    <timeStampingBrokerPlugin ttlCeiling="3600000" zeroExpirationOverride="3600000" />
   	</plugins>
</borker>

上面那步搞定了之后,再修改timeStampingBrokerPlugin标签里ttlCeiling="3600000" zeroExpirationOverride="3600000"表示过期时间为3600000ms(1小时)。

改完配置保存,重启生效。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值