1.日志信息:
2019-09-26 15:27:03.415 ERROR 13580 --- [ 127.0.0.1:5672] o.s.a.r.c.CachingConnectionFactory : Channel shutdown: connection error; protocol method: #method<connection.close>(reply-code=503, reply-text=COMMAND_INVALID - unknown exchange type 'x-delayed-message', class-id=40, method-id=10)
2.原因分析
延时队列报错
ShutdownSignalException: connection error; protocol method:#method<connection.close>(reply-code=503, reply-text=COMMAND_INVALID - unknown exchange type 'x-delayed-message', class-id=40, method-id=10)
代表没有找到对应x-delayed-message的exchange type
RabbitMQ默认的交换机类型为:
headers、direct、fanout、topic
3.解决方法:
1、下载rabbitMQ插件
插件下载地址:https://www.rabbitmq.com/community-plugins.html
选择rabbitmq_delayed_message_exchange插件。
根据安装的RabbitMQ版本选择相对应版本的插件。
这里我本机 RabbitMQ安装的是3.7.18版本的,所以选择下载3.7.x版本的插件。
在下载好之后,解压得到 .ez 结尾的插件包,将其复制到RabbitMQ安装目录下的 plugins 文件夹。
下面是我解压出来的.ez文件:
复制粘贴到plugins文件夹下:
然后通过命令行启用该插件:
rabbitmq-plugins enable rabbitmq_delayed_message_exchange |
至此,就添加了x-delayed-message类型的交换机
4.注意问题
RabbitMQ版本为3.7.17时插件能成功安装,但是不能正常使用,依然会报错!!!!
我这里是升级了一个版本,到3.7.18。
或者使用3.6低版本也可以避免此问题。