Spring Boot 中,RabbitMQ 的连接自动检查是由 Spring AMQP(一个用于简化 AMQP 协议使用的框架)来处理的。要禁用 RabbitMQ 的自动连接检查,可以通过配置 CachingConnectionFactory 实例的 publisherConfirms 和 publisherReturns 属性,华纳云为大家总结如下!
Spring Boot 应用程序中,利用修改 application.properties 或 application.yml 文件中的配置来实现这一点,或者直接在 Java 配置类中进行配置。
在application.properties 或 application.yml 中配置
spring.rabbitmq.publisher-confirm-type=none
spring.rabbitmq.publisher-returns=false
在Java配置类中配置:
import org.springframework.amqp.rabbit.connection.CachingConnectionFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class RabbitMQConfig {
@Bean
public CachingConnectionFactory rabbitConnectionFactory() {
CachingConnectionFactory connectionFactory = new CachingConnectionFactory("your-rabbitmq-server");
connectionFactory.setUsername("your-username");
connectionFactory.setPassword("your-password");
connectionFactory.setVirtualHost("your-vhost");
// Disable publisher confirms and returns
connectionFactory.setPublisherConfirmType(CachingConnectionFactory.ConfirmType.NONE);
connectionFactory.setPublisherReturns(false);
return connectionFactory;
}
}
在上述配置中,通过将 publisherConfirmType 设置为 NONE 和将 publisherReturns 设置为 false,来禁用 RabbitMQ 的连接检查。
如有一个Spring Boot 应用程序,在 application.properties 文件中进行配置:
# RabbitMQ 配置
spring.rabbitmq.host=your-rabbitmq-server
spring.rabbitmq.port=5672
spring.rabbitmq.username=your-username
spring.rabbitmq.password=your-password
spring.rabbitmq.virtual-host=your-vhost
# 禁用连接检查
spring.rabbitmq.publisher-confirm-type=none
spring.rabbitmq.publisher-returns=false
或者是使用 Java 配置,可以在 RabbitMQConfig 类中配置:
import org.springframework.amqp.rabbit.connection.CachingConnectionFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class RabbitMQConfig {
@Bean
public CachingConnectionFactory rabbitConnectionFactory() {
CachingConnectionFactory connectionFactory = new CachingConnectionFactory("your-rabbitmq-server");
connectionFactory.setUsername("your-username");
connectionFactory.setPassword("your-password");
connectionFactory.setVirtualHost("your-vhost");
// Disable publisher confirms and returns
connectionFactory.setPublisherConfirmType(CachingConnectionFactory.ConfirmType.NONE);
connectionFactory.setPublisherReturns(false);
return connectionFactory;
}
}
以上配置,可以禁用Spring Boot 应用程序中 RabbitMQ 的自动连接检查。