延迟队列,即消息进入队列后不会立即被消费,只有到达指定时间后,才会被消费。
虽然RabbitMQ中没有提供延迟队列功能,但是可以使用TTL+死信队列组合实现延迟队列效果

1.首先创建生产者的maven工程,导入依赖
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.1.9.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.amqp</groupId>
<artifactId>spring-rabbit</artifactId>
<version>2.1.8.RELEASE</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.1.9.RELEASE</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
2.创建rabbitmq.properties
rabbitmq.host=X.X.X.X
rabbitmq.port=5672
rabbitmq.username=XXX
rabbitmq.password=XX
rabbitmq.virtual-host=/
这里叉一下如何Linux(centos7)下创建rabbitmq用户
创建用户名admin,密码abc的用户:
rabbitmqctl add_user admin abc
设置admin为超级管理员
rabbitmqctl set_user_tags admin administrator
授权远程访问(也可以登录后,可视化配置)
rabbitmqctl set_permissions -p / admin "." "." ".*"
创建完成后,重启RabbitMQ
systemctl restart rabbitmq-server
也可在服务器安装好rabbitmq后
启用管理平台插件,启用插件后,可以可视化管理RabbitMQ。
注意这里如果开启了rabbitmq服务要先关闭再执行下面命令
rabbitmq-plugins enable rabbitmq_management
再启动rabbitmq服

本文详细介绍了如何使用RabbitMQ通过TTL和死信队列来实现延迟队列功能。首先创建生产者和消费者的Maven工程,配置相关依赖和属性文件。接着在XML配置文件中定义交换机、队列、死信队列和绑定,设置消息过期时间。在生产者测试类中发送订单消息,消费者监听死信队列并处理过期消息。通过这种方式,实现了延迟10秒处理订单的延迟队列效果。
最低0.47元/天 解锁文章
1199

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



