用RabbitMQ(TTL+DLX(死信队列)) 实现延迟队列

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

延迟队列,即消息进入队列后不会立即被消费,只有到达指定时间后,才会被消费。

虽然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服务

systemctl start rabbitmq-server

即可访问控制台页面
1、访问地址
http://X.X.X.X(这里是你装有

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值