RabbitMQ(004 过期时间以及死信)

动力节点RabbitMQ教程|12小时学会rabbitmq消息中间件

总时长 12:20:00 共65P

此文章包含第21p-第p30的内容


TTL 过期时间

-1代表永不过期
RabbitMQ(004 过期时间以及死信)_第1张图片
RabbitMQ(004 过期时间以及死信)_第2张图片

RabbitMQ(004 过期时间以及死信)_第3张图片

RabbitMQ(004 过期时间以及死信)_第4张图片

RabbitMQ(004 过期时间以及死信)_第5张图片

RabbitMQ(004 过期时间以及死信)_第6张图片

无人接收 并且过期的消息 被称为 : 死信

RabbitMQ(004 过期时间以及死信)_第7张图片

整个队列都设置过期时间

RabbitMQ(004 过期时间以及死信)_第8张图片

RabbitMQ(004 过期时间以及死信)_第9张图片

RabbitMQ(004 过期时间以及死信)_第10张图片

如果队列和单独消息都设置过期时间了 哪个时间短用哪个
RabbitMQ(004 过期时间以及死信)_第11张图片

死信队列

RabbitMQ(004 过期时间以及死信)_第12张图片

例子:
一个人17:00提交订单购买火车票 ,30分钟如果未支付自动取消
这个可以用死信队列进行操作
发送消息到队列 30分钟后进入死信队列,去数据库查看是否付款 ,如果付款不操作,如果未付款 则将此订单状态改为超时未付款 
(其实进入死信基本就代表了未付款,谨慎处理 还是查一下数据库为妙 )

RabbitMQ(004 过期时间以及死信)_第13张图片
RabbitMQ(004 过期时间以及死信)_第14张图片

RabbitMQ(004 过期时间以及死信)_第15张图片

设置它的死信交换机 如果这个消息过期将通过死信交换机进行操作

RabbitMQ(004 过期时间以及死信)_第16张图片

RabbitMQ(004 过期时间以及死信)_第17张图片

RabbitMQ(004 过期时间以及死信)_第18张图片

设置死信路由key

RabbitMQ(004 过期时间以及死信)_第19张图片
RabbitMQ(004 过期时间以及死信)_第20张图片

如果是直连交换机
死信交换机和死信队列绑定的key 要和进入的key一样 否则会被扔掉
RabbitMQ(004 过期时间以及死信)_第21张图片

RabbitMQ(004 过期时间以及死信)_第22张图片

注意过期时间是数字类型,不是字符串

RabbitMQ(004 过期时间以及死信)_第23张图片

RabbitMQ(004 过期时间以及死信)_第24张图片

RabbitMQ(004 过期时间以及死信)_第25张图片
重点
RabbitMQ(004 过期时间以及死信)_第26张图片

RabbitMQ(004 过期时间以及死信)_第27张图片

RabbitMQ(004 过期时间以及死信)_第28张图片

20秒后变成下面的情况

RabbitMQ(004 过期时间以及死信)_第29张图片

消息过期

RabbitMQ(004 过期时间以及死信)_第30张图片

也可以用.deadLetterExchange()方法 建造者模式
RabbitMQ(004 过期时间以及死信)_第31张图片

RabbitMQ(004 过期时间以及死信)_第32张图片

RabbitMQ(004 过期时间以及死信)_第33张图片

切记别忘了把属性放进去 .andProperties

RabbitMQ(004 过期时间以及死信)_第34张图片

RabbitMQ(004 过期时间以及死信)_第35张图片
消息是以队列的形式存的
RabbitMQ(004 过期时间以及死信)_第36张图片

超过最大长度的死信

RabbitMQ(004 过期时间以及死信)_第37张图片

RabbitMQ(004 过期时间以及死信)_第38张图片
可以在界面上直接添加queue 我们用的是使用代码进行添加
RabbitMQ(004 过期时间以及死信)_第39张图片

设置最大长度为5

RabbitMQ(004 过期时间以及死信)_第40张图片

发送8条消息
RabbitMQ(004 过期时间以及死信)_第41张图片

队头的数据会变成死信 后面的会把前面的挤出去
RabbitMQ(004 过期时间以及死信)_第42张图片

RabbitMQ(004 过期时间以及死信)_第43张图片

RabbitMQ(004 过期时间以及死信)_第44张图片

开启消费者的手动确认 这样如果消费者数据库宕机了 也不会提前删除此消息

RabbitMQ(004 过期时间以及死信)_第45张图片
导入这个包getDeliveryTag 代表rabbitmq生成的唯一标识

RabbitMQ(004 过期时间以及死信)_第46张图片

RabbitMQ(004 过期时间以及死信)_第47张图片
RabbitMQ(004 过期时间以及死信)_第48张图片

RabbitMQ(004 过期时间以及死信)_第49张图片

RabbitMQ(004 过期时间以及死信)_第50张图片

这俩的区别:
basicNack: 一次可以处理多条消息
basicReject:一次只处理一条消息
RabbitMQ(004 过期时间以及死信)_第51张图片
配了死信队列 会进入死信队列里 如果没配置死信队列则直接删除


你可能感兴趣的:(rabbitMQ,rabbitmq,分布式)