原因本身我有一个队列已经启动并接受消息了,后来加上死信
/**
* 定义死信队列相关信息
*/
public final static String deadQueueName = "dead_queue";
public final static String deadRoutingKey = "dead_routing_key";
public final static String deadExchangeName = "dead_exchange";
/**
* 死信队列 交换机标识符
*/
public static final String DEAD_LETTER_QUEUE_KEY = "x-dead-letter-exchange";
/**
* 死信队列交换机绑定键标识符
*/
public static final String DEAD_LETTER_ROUTING_KEY = "x-dead-letter-routing-key";
@Bean
public Queue firstQueue() {
// 将普通队列绑定到死信队列交换机上
Map<String, Object> args = new HashMap<>(2);
args.put(DeadLetterConfig.DEAD_LETTER_QUEUE_KEY, DeadLetterConfig.deadExchangeName);
args.put(DeadLetterConfig.DEAD_LETTER_ROUTING_KEY, DeadLetterConfig.deadRoutingKey);
return new Queue(man, true, false, false, args);
}
报错了
Channel shutdown: channel error; protocol method: #method<channel.close>(reply-code=406, reply-text=PRECONDITION_FAILED - inequivalent arg 'x-dead-letter-exchange' for queue 'xxxxxx' in vhost '/': received none but current is the value 'xxxxxx' of type 'longstr', class-id=50, method-id=10)
把队列删掉重新启动就行了