RabbitMQ由于x-message-ttl设置与代码不一致导致declareQueue时IO异常

发布时间 2023-07-26 10:30:08作者: colfish

具体异常:

Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; protocol method: #method<channel.close>(reply-code=406, reply-text=PRECONDITION_FAILED - inequivalent arg 'x-message-ttl' for queue 'queryResult' in vhost 'bedrock_i': received '100000' but current is '2000000', class-id=50, method-id=10)

原因

此处queryResult队列mq中x-message-ttl设置为2000000

代码中declareQueue代码为:

Queue queue = QueueBuilder.durable("queryResult")
	.withArgument("x-message-ttl", 100 * 1000)
	.withArgument("x-dead-letter-exchange", "queryResult-delay")
	.withArgument("x-dead-letter-routing-key", "queryResult-delay")
	.build();
rabbitAdmin.declareQueue(queue);

代码中声明的x-message-ttl100000,导致声明队列异常。

declareQueue时设置的x-message-ttl一定要和rabbitmq中设置的x-message-ttl一致