上文我们讲了如何通过死信队列TTL实现消息延迟,这一节,主要通过插件实现;
1、下载 rabbitmq_delayed_message_exchange插件
地址:https://www.rabbitmq.com/community-plugins.html
这里需注意,下载插件版本需对应MQ版本。否则创建交换机时会不成功,小编这一直报500异常,搞了好久才通过同事得知,伤不起。。
2、将下载好的插件放入rabbitmq安装目录下的plugins里面,并启动
--启用插件
rabbitmq-plugins enable rabbitmq_delayed_message_exchange
-- 关闭插件
rabbitmq-plugins disable rabbitmq_delayed_message_exchange
安装好后,在MQ管理界面出现如图,则表示创建成功
![e72deb931eaf93af9cdd2634b872ac3d.png](https://i-blog.csdnimg.cn/blog_migrate/ad2e9607422bd220a61e0da52ae01b9a.jpeg)
3、代码实现:
pom及配置文件,这里就不再多讲,如果有需要的,可以看上一篇文章;
// 插件创建延迟队列交换机
public static final String DELAY_PLUGIN_EXCHANGE = "delayed_exchange";
// 插件创建延迟队列
public static final String DELAY_QUEUE = "delayed_queue";
/**
*
* 创建延迟消费队列
*/
@Bean
public Queue delayedQueue(){
return new Queue(DELAY_QUEUE,true);
}
/**
*
* 创建延迟消费队列的交换机
*/
@Bean
public CustomExchange delayedExchange(){
Map args = new HashMap();
args.put("x-delayed-type