动力节点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:一次只处理一条消息
配了死信队列 会进入死信队列里 如果没配置死信队列则直接删除