有多种类型的时序任务。常见的定时任务,例如日志备份。我们可能每天凌晨3点返回备份。这种固定的时间任务可以通过CRON表达式轻松实现。有一些特别的特价特殊特价。Cron不容易描述此计时任务,因为开始时间不确定,有时我们的开发中会遇到类似的需求。例如:
在许多情况下,我们需要延迟队列。
本文以RabbitMQ为例,与您讨论延迟队列。
总体而言,有两种方法可以在RabbitMQ上实施定时任务:有两种方法:
让我们看一下两种用法。
首先,我们需要下载rabbitmq_delayed_message_exchange插件-in。这是GitHub上的开源项目。我们可以直接下载它:
选择适合您的版本,我在此处选择最新版本3.9.0。
下载完成后,执行以下命令将下载文件复制到Docker容器:
这里的第一个参数是主机上的文件地址,第二个参数是复制到容器位置。
接下来,将以下命令执行到RabbitMQ容器中:
输入容器后,执行以下命令以启用插件-in:
成功后,您还可以查看所有已安装的插头 - 以查看我们是否刚刚安装的插头,如下:
命令的完整执行过程如下所示:
好的,在配置完成后,我们执行命令以退出RabbitMQ容器。然后开始代码。
接下来,启动消息并发送。
首先,我们创建一个Spring Boot项目,介绍Web和RabbitMQ依赖项如下:如下:
成功创建了项目后,在应用程序中配置了RabbitMQ的基本信息。
接下来,提供兔子的配置类:
这主要是因为开关的定义是不同的,朋友需要注意。
我们在这里使用的开关是CustomeXchange。这是春季提供的开关。创建CustomeXchange时有五个参数。含义如下:
在最后一个ARG参数中,指定了开关消息分布的类型。这种类型是每个人都知道的几种直接,粉丝,主题和标题的类型。在使用哪种类型中,将来将在将来会出现交换机分发消息。
接下来,我们创建另一个消息消费者:
只需打印消息内容即可。
接下来,编写单元测试方法以发送消息:
在消息标题中设置消息的延迟时间。
好吧,然后启动Spring Boot项目,然后运行单元测试方法发送消息。最终的控制台打印日志如下:
从日志延迟可以看出。
延迟队列的想法也非常简单,即,我们提到的DLX(死信开关)+TTL(Newsout Time)的上一篇文章。
我们可以将致命队列视为延迟队列。
具体而言,这是:
该消息进入了死信,因为它没有被消费者消耗。目前,我们有一个消费者在“蹲”的死字队列中。消息一进入死者队列,我们就立即被消耗掉了。
这是延迟队列的实现。这很简单吗?
接下来,通过简单的情况,Matsushita将通过简单的情况来演示延迟队列的特定实现。
首先准备启动兔子。
然后,我们创建一个Spring Boot项目来引入RabbitMQ依赖性:
然后在应用程序中配置RabbitMQ的基本连接信息。Properties::
接下来,我们将配置两个消息队列:一个普通队列,一个死信队列:
尽管此配置代码稍长,但原理实际上很简单。
接下来,我们为死信队列配置消费者,如下:
收到消息后,打印出来。
一切都结束了。
启动项目。
最后,我们在单元测试中发送一条消息:
关于这一点没有什么可说的,即发送普通消息。10秒钟后,此消息将在致命队列的消费者中打印出来。
好吧,这是我们使用RabbitMQ延迟队列的两个想法?感兴趣的朋友可以尝试一下?