项目

一般

简介

【RabbitMQ 延迟消息创建失败】

陈 泽豪大约一个月 之前添加

【管控台版本】:2.4.13

【消息服务版本】:2.4.4

【问题场景】:用户使用RabbitMQ插件,使用到了延迟消息:

Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; protocol method: #method<channel.close>(reply-code=406, reply-text=PRECONDITION_FAILED - inequivalent arg 'type' for exchange 'deviceRechargeExchange' in vhost 'vhost01': received 'x-delayed-message' but current is 'null', class-id=40, method-id=10)

这个可能是2.4.4使用的RabbitMQ插件版本是2.x的,可能不支持延迟消息,所以重新换成苍穹的服务包(3.x)

注意:3.x版本的话jdk8版本低了,需要指定高版本jdk

 

2、升级后发现还是不行,异常如下:

ERROR o.s.amqp.rabbit.connection.CachingConnectionFactory.log:1566 -Channel shutdown: channel error; protocol method: #method<channel.close>(reply-code=503, reply-text=unknown exchange type: x-delayed-message, class-id=40, method-id=10)

这个是由于ADMQ和开源的Rabbitmq不太一样,使用延迟交换机时,不用声明延迟交换机,改成 direct

将应用中上述的延迟配置注释掉