ActiveMQ专题14 —— ActiveMQ高级特性2

本文深入探讨了ActiveMQ的死信队列特性,它用于处理异常和过期消息。当消息经过多次重试后仍未成功处理,会被发送到死信队列。默认的死信队列是ActiveMQ.DLQ,可配置独立队列策略。死信队列策略包括共享和独立两种,分别用于处理持久和非持久消息。应用案例展示了如何在第三方系统故障时利用死信队列进行故障隔离和后期处理。了解这些高级特性对于消息队列的稳定运行至关重要。

前言

续上篇ActiveMQ高级特性,详细地址在下面

死信队列

死 信 队 列 : 异 常 消 息 规 避 处 理 的 集 合 , 主 要 处 理 失 败 的 消 息 。 \color{red}死信队列:异常消息规避处理的集合,主要处理失败的消息。
ActiveMQ中引入了“死信队列”(Dead Letter Queue)的概念。即一条消息再被重发了多次后(默认为重发6次,即redeliveryCounter==6) 。将会被ActiveMQ移入“死信队列”。开发人员可以在这个Queue中查看处理出错的消息,进行人工干预。
在这里插入图片描述

死信队列应用案例

DLQ-死信队列(Dead Letter Queue)用来保存处理失败或者过期的消息。
在这里插入图片描述
一般生产环境中在使用MQ的时候设计两个队列:一个是核心业务队列,一个是死信队列。

核心业务队列,就是比如上图专门用来让订单系统发送订单消息的,然后另外一个死信队列就是用来处理异常情况的。

假如第三方物流系统故障了,此时无法请求,那么仓储系统每次消费到一条订单消息,尝试通知发货和配送都会遇到对方的接口报错。此时仓储系统就可以把这条消息拒绝访问或者标记为处理失败。一旦标记这条消息处理失败了之后,MQ就会把这条消息转入提前设置好的一个死信队列中。然后你会看到的就是,在第三方物流系统故障期间,所有的订单消息全部处理失败,全部都会转入到死信队列。然后你的仓储系统得专门找一个后台线程,监控第三方物流系统是否正常,是否能请求,不停地监视。一旦发现对方恢复正常,这个后台线程就从死信队列消费出来处理失败的订单,重新执行发货和配送通知。

缺 省 持 久 消 息 过 期 , 会 被 送 到 死 信 队 列 , 非 持 久 消 息 不 会 送 到 D L Q 。 \color{red}缺省持久消息过期,会被送到死信队列,非持久消息不会送到DLQ。 DLQ
缺 省 的 死 信 队 列 是 A c t i v e M Q . D L Q , 如 果 没 有 特 别 指 定 , 死 信 都 会 被 发 送 到 这 个 队 列 中 。 \color{red}缺省的死信队列是ActiveMQ.DLQ,如果没有特别指定,死信都会被发送到这个队列中。 ActiveMQ.DLQ

死信队列策略

  1. 共享队列策略(默认)
<!-->”表示对所有队列生效,如果需要设置指定队列,则直接写队 列名称-->
<policyEntry queue=">">
	<deadLetterStrategy>
		<sharedDeadLetterStrategy processNonPersistent="false" processExpired="true" deadLetterQueue="" />
	</deadLetterStrategy>
</policyEntry>  
$\color{red}processNonPersistent:是否将非持久化消息发送到死信队列,默认false;processExpired:是否将过期消息放入到死信队列中,默认为true$
  1. 独立死信队列策略
    individualDeadLetterStrategy可以为queue和topic单独指定两个死信队列。还可以为某个话题,单独指定一个死信队列。
<!-->”表示对所有队列生效,如果需要设置指定队列,则直接写队 列名称-->
<policyEntry queue=">">
	<deadLetterStrategy>
	<!--
		Use the prefix 'DLQ.' for the destination name, and make
		the DLQ a queue rather than a topic
	-->
		<individualDeadLetterStrategy queuePrefix="DLQ."/>
	</deadLetterStrategy>
</policyEntry>

queuePrefix:设置死信队列前缀
在这里插入图片描述
在这里插入图片描述
配置案例:
在这里插入图片描述

自动删除过期消息

过期消息是值生产者指定的过期时间,超过这个时间的消息。
在这里插入图片描述

存放非持久消息到死信队列中

在这里插入图片描述

消息不被重复消费,幂等性

原因:
在这里插入图片描述
解決方法:
在这里插入图片描述

小总结

基本上述的标题都是大厂常规面试题目

连更文章

ActiveMQ专题0 —— 前言说明
ActiveMQ专题1 —— 入门概述
ActiveMQ专题2 —— ActiveMQ下载和安装(Linux版)
ActiveMQ专题3 ——Java编码实现ActiveMQ通讯(Queue)
ActiveMQ专题4 ——ActiveMQ专题4 ——Java编码实现ActiveMQ通讯(Topic)
ActiveMQ专题5 ——JMS规范和落地产品
ActiveMQ专题6 ——ActiveMQ的Broker
ActiveMQ专题7 —— Spring整合ActiveMQ
ActiveMQ专题8 —— SpringBoot整合ActiveMQ
ActiveMQ专题9 —— ActiveMQ的传输协议
ActiveMQ专题10 —— ActiveMQ的存储和持久化
ActiveMQ专题11 —— ActiveMQ的存储和持久化2 (续篇)
ActiveMQ专题12—— ActiveMQ之zookeeper集群
ActiveMQ专题13—— ActiveMQ高级特性
ActiveMQ专题14—— ActiveMQ高级特性2
$\color{red} 完结!后续推上有关消息队列的面试题目 $

小总结

知 道 的 越 多 , 不 知 道 的 越 多 , 希 望 对 你 有 帮 助 ! \color{red}知道的越多,不知道的越多,希望对你有帮助!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值