动力节点RabbitMQ教程|12小时学会rabbitmq消息中间件
总时长 12:20:00 共65P
此文章包含第21p-第p30的内容
TTL 过期时间
-1代表永不过期






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

整个队列都设置过期时间



如果队列和单独消息都设置过期时间了 哪个时间短用哪个

死信队列

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



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



设置死信路由key


如果是直连交换机
死信交换机和死信队列绑定的key 要和进入的key一样 否则会被扔掉


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



重点



20秒后变成下面的情况

消息过期

也可以用.deadLetterExchange()方法 建造者模式



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



消息是以队列的形式存的

超过最大长度的死信


可以在界面上直接添加queue 我们用的是使用代码进行添加

设置最大长度为5

发送8条消息

队头的数据会变成死信 后面的会把前面的挤出去



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

导入这个包getDeliveryTag 代表rabbitmq生成的唯一标识





这俩的区别:
basicNack: 一次可以处理多条消息
basicReject:一次只处理一条消息

配了死信队列 会进入死信队列里 如果没配置死信队列则直接删除
257

被折叠的 条评论
为什么被折叠?



