RabbitMq的TTL和死信Exchange完成实时的延迟任务详细讲解

使用场景列举

1.订单超时未支付自动取消订单
2.一些流程节点发起过期未审核子自动驳回

特点

能实时的完成上述业务的处理,不存在定时器那样到了定时器执行的时间,才会执行业务逻辑

流程

消息生产者首先会发送消息到延迟队列上(register_delay_queue),并会给消息设置一个过期时间,过期时间到了后,消息会转发到我们定义的普通队列上(my_queue_name).对于消费者会监听我们的普通队列(my_queue_name),比如我们的订单的超时未支付就取消订单,消费者的业务逻辑就是,通过订单id拿到订单,判断订单状态如果时未支付,就修改订单状态为已失效

TTL(Time To Live)

RabbitMQ可以对队列和消息分别设置TTL。对队列设置就是队列没有消费者连着的保留时间,也可以对每一个单独的消息做单独的设置。超过了这个时间,我们认为这个消息就死了,称之为死信。如果队列设置了,消息也设置了,那么会取小的。
延迟队列配置方法

1、params.put("x-message-ttl", 5 * 1000);          
   第一种方式是直接设置 Queue 延迟时间 但如果直接给队列设置过期时间,这种做法不是很灵活
 2、rabbitTemplate.convertAndSend(book, message -> {
  MessageProperties messageProperties=message.getMessageProperties();
         messageProperties.setContentEncoding("UTF-8&#
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值