rabbitmq延迟队列实现(插件方式)

 rabbitmq  rabbitmq延迟队列实现(插件方式)已关闭评论
12月 102020
 

在RabbitMQ 3.5.7及以后的版本提供了一个插件(rabbitmq-delayed-message-exchange)来实现延时队列功能。同时插件依赖Erlang/OPT 18.0及以上。

插件的源码地址:

https://github.com/rabbitmq/rabbitmq-delayed-message-exchange

插件下载地址:

https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases

 

 

以linux下为例:

1、进入插件目录

$ whereis rabbitmq   #查询rabbitmq所在目录

$ cd /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.12/plugins  #进入所在目录的plugins目录

2、下载插件

wget https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases/download/3.8.9/rabbitmq_delayed_message_exchange-3.8.9-0199d11c.ez

3、启用插件

rabbitmq-plugins enable rabbitmq_delayed_message_exchange

4、停用插件

rabbitmq-plugins disable rabbitmq_delayed_message_exchange

5、插件使用

通过声明一个x-delayed-message类型的exchange来使用delayed-messaging特性。x-delayed-message是插件提供的类型,并不是rabbitmq本身的(区别于direct、topic、fanout、headers)。

preview

 

使用方法可以参考上面git上插件源码页面提示。

Done!

 

rabbitmq批量删除队列(How to delete multiple queues in RabbitMQ)

 rabbitmq  rabbitmq批量删除队列(How to delete multiple queues in RabbitMQ)已关闭评论
11月 182019
 

问题:

rabbitmq里测试时产生了大量的以amq.gen-开头的队列,一个一个删除实在太累了,有什么办法可以一次性的删除??

 

方法如下:

  1. 终端使用rabbitmq-plugins enable rabbitmq_management 命令启用management插件,因为management插件带有一个命令行工具rabbitmqadmin,我们就是使用这个工具。
  2. 如果我们需要删除队列名中含有 “amq.gen-”的队列,使用下面的命令即可:rabbitmqadmin list queues name | awk ‘{print $2}’ | grep “amq.gen-” | xargs -I {} rabbitmqadmin  delete queue name={}

如果rabbitmq操作的是vhost里的queue, 那么在rabbitmqadmin 命令后面 加上参数 –vhost=vhost名称即可