延迟插件

博客介绍了RabbitMQ延迟插件的功能与安装测试步骤。该插件可用于消息延迟推送、定时任务执行等,如淘宝自动支付、滴滴自动评价。安装步骤包括下载插件、复制到指定目录、启动插件、配置Exchange,最后进行了15秒延迟消息测试。

延迟插件可以做什么事情?

比如消息的延迟推送、定时任务(消息)的执行。包括一些消息重试策略的配合使用,以及用于业务削峰限流、降级的异步延迟消息机制,都是延迟队列的实际应用场景

现实中,淘宝收货后,如果不确认支付,系统会7天后自动支付给卖家,或滴滴不给好评,延迟24小时后,自动给评价

安装步骤

下载插件

http://www.rabbitmq.com/community-plugins.html

对应3.6版的rabbitmq_delayed_message_exchange-0.0.1.ez

把下载好的文件放到指定的目录

把rabbitmq_delayed_message_exchange-0.0.1.ez复制到/usr/lib/rabbitmq/lib/rabbitmq_server-3.6.5/plugins

三个节点都要复制

启动插件

 三个节点都要启动延迟消息

rabbitmq-plugins enable rabbitmq_delayed_message_exchange

配置Exchange

必须加参数x-delayed-type

测试延迟消息

15秒后接收到该消息

 

### 安装 RabbitMQ 延迟消息插件 RabbitMQ 延迟消息插件(rabbitmq_delayed_message_exchange)是一个社区开发的插件,它为 RabbitMQ 添加了支持延迟消息的功能。通过这个插件,用户可以创建一种特殊的交换机类型 `x-delayed-message`,该交换机允许将消息在指定的时间后发送到目标队列[^2]。 #### 1. 判断 RabbitMQ 是否已安装延迟队列插件 在 RabbitMQ 中,可以通过以下方式判断是否已经安装了延迟队列插件: - 登录 RabbitMQ 管理界面(默认地址为 `http://localhost:15672`)。 - 在“Admin”标签页中,查看可用的插件列表,确认是否存在 `rabbitmq_delayed_message_exchange` 插件。 如果没有看到 `x-delayed-message` 类型的交换机,则说明插件尚未安装[^3]。 #### 2. 下载与安装插件 为了确保插件与 RabbitMQ 的版本兼容,下载插件时需要注意版本匹配。通常建议选择与 RabbitMQ 版本接近的插件版本。例如,如果 RabbitMQ 版本是 3.10.1,可以选择 3.10.0 版本的插件进行安装[^4]。 ##### 下载地址: 可以前往 [RabbitMQ 社区插件页面](https://www.rabbitmq.com/community-plugins.html) 下载 `rabbitmq-delayed-message-exchange` 插件。 ##### 安装步骤: 1. 解压下载的插件文件。 2. 将解压后的插件文件复制到 RabbitMQ 的 `plugins` 目录中。 3. 在 RabbitMQ 的 `sbin` 目录下运行以下命令以启用插件: ```bash rabbitmq-plugins enable rabbitmq_delayed_message_exchange ``` 4. 重启 RabbitMQ 服务以确保插件生效。 #### 3. 使用延迟消息插件 安装完成后,可以通过以下步骤使用延迟消息功能: ##### 创建 `x-delayed-message` 类型的交换机 在 RabbitMQ 客户端中,创建一个类型为 `x-delayed-message` 的交换机,并设置相应的参数。例如,在 Python 中可以使用 `pika` 库实现: ```python import pika # 连接到 RabbitMQ 服务器 connection = pika.BlockingConnection(pika.ConnectionParameters('localhost')) channel = connection.channel() # 声明一个 x-delayed-message 类型的交换机 channel.exchange_declare( exchange='delayed_exchange', exchange_type='x-delayed-message', durable=True, arguments={'x-delayed-type': 'direct'} ) # 声明一个队列并绑定到交换机 channel.queue_declare(queue='delayed_queue', durable=True) channel.queue_bind(exchange='delayed_exchange', queue='delayed_queue', routing_key='delayed_key') # 发送延迟消息 channel.basic_publish( exchange='delayed_exchange', routing_key='delayed_key', body='This is a delayed message', properties=pika.BasicProperties( headers={'x-delay': 5000} # 延迟 5 秒 ) ) print(" [x] Sent delayed message") connection.close() ``` ##### 消费延迟消息 消费者端的代码与普通 RabbitMQ 消费者类似,只需监听队列即可: ```python import pika # 连接到 RabbitMQ 服务器 connection = pika.BlockingConnection(pika.ConnectionParameters('localhost')) channel = connection.channel() # 声明队列 channel.queue_declare(queue='delayed_queue', durable=True) # 定义回调函数 def callback(ch, method, properties, body): print(f" [x] Received {body}") ch.basic_ack(delivery_tag=method.delivery_tag) # 消费消息 channel.basic_consume(queue='delayed_queue', on_message_callback=callback) print(' [*] Waiting for messages. To exit press CTRL+C') channel.start_consuming() ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值