C# RabbitMQ延迟队列功能实战项目演练

时间:2022-05-08 08:39:12

一、需求背景

当用户在商城上进行下单支付,我们假设如果8小时没有进行支付,那么就后台自动对该笔交易的状态修改为订单关闭取消,同时给用户发送一份邮件提醒。那么我们应用程序如何实现这样的需求场景呢?在之前的《C# Redis缓存过期实现延迟通知实战演练》分享课程中阿笨最后总结的时候说过Redis Pub/Sub是一种并不可靠地消息机制,他不会做信息的存储,只是在线转发,那么肯定也没有ack确认机制,另外只有订阅段监听时才会转发!我们是否有更好的方式去实现呢?今天给大家分享的比较好的解决方案就是通过RabbitMQ的TTL(time to live)和DLX(Dead-Letter-Exchange)来实现延迟任务。

1.1、本次分享课程适合人群如下:

1、有一定的NET开发基础并对RabbitMQ技术有一定了解和认识。

2、喜欢阿笨的干货分享课程的童鞋们。

1.2、一句话总结今天我们要学习的目标和成果?

C#如何通过RabbitMQ如何实现延迟队列功能。

如果您对本次《C#RabbitMQ延迟队列功能实战项目演练》分享课程感兴趣的话,那么请跟着阿笨一起学习吧。

废话不多说,直接上干货,我们不生产干货,我们只是干货的搬运工。

二、场景介绍

2.1、什么是延迟队列?

2.2、使用RabbitMQ实现延迟任务应用场景

三、思路讲解

3.1、实现思路

3.2、实现方案

四、实现步骤

1)、基于队列方式实现延迟队列(消息队列中所有消息的过期TTL一样)

2)、基于消息方式实现延迟队列(消息队列中单个消息的过期TTL不一样)

五、课后思考与总结