一、响应状态码reply-code=406, reply-text=PRECONDITION_FAILED
第一种原因:RabbitMQ不允许使用不同的参数重新定义一个队列,所以已经存在的队列,我们无法修改其属性。 如重复定义我们可能遇到上面的错误
第二种原因:Springboot 配置文件使用 手动确认模式
spring.rabbitmq.listener.simple.acknowledge-mode=manual
同时添加了配置类
@Bean
public RabbitListenerContainerFactory<?> rabbitListenerContainerFactory(ConnectionFactory connectionFactory){
SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
factory.setConnectionFactory(connectionFactory);
factory.setConcurrentConsumers(5);
factory.setMaxConcurrentConsumers(10);
factory.setMessageConverter(new Jackson2JsonMessageConverter());
return factory;
}
Springboot 代码配置 比 文件配置 优先级高
解决: 将设置手动确认 配置到 java代码中即可。
@Bean
public RabbitListenerContainerFactory<?> rabbitListenerContainerFactory(ConnectionFactory connectionFactory){
SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
factory.setConnectionFactory(connectionFactory);
#手动签收消息
factory.setAcknowledgeMode(AcknowledgeMode.MANUAL);
#对消费者进行限流
factory.setConcurrentConsumers(5);
factory.setMaxConcurrentConsumers(10);
factory.setMessageConverter(new Jackson2JsonMessageConverter());
return factory;
}