SpringBoot2整合了Rabbitmq以后,有些情景不需要初始化和连接Rabbitmq,所以需要怎么处理呢?

本文介绍了如何在SpringBoot项目中通过YML配置动态控制RabbitMQ的连接启用和禁用,避免不必要的服务安装和时间消耗。
摘要由CSDN通过智能技术生成

        问题提出,最近有个需求,有的场合项目需要连接Rabbitmq,有些场合项目就不需要连接,再不需要连接的时候,还必须的安装Rabbimq服务,徒增时间消耗,所以需要处理一下。

        在yml中配置如下:

spring:
  rabbitmq:
    # 配置rabbitMq启用开关
    enable: true
    host: xxx.xx.xxx.xxx
    port: 5672
    username: xxx
    password: xxxxxxxx!
    virtualHost: /xxxx

         启动类中配置如下,禁用springboot的自动配置:

@SpringBootApplication(exclude = {RabbitAutoConfiguration.class})

         读取配置的配置类:

@Data
@Component
@ConfigurationProperties(prefix = "spring.rabbitmq")
public class MyRabbitMqConfig {
    /**
     * 服务是否启用
     * true是启用
     * false是禁用
     */
    private boolean enable;
    /**
     * 主机ip
     */
    private String host;
    /**
     * 服务端ip
     */
    private int port;
    /**
     * 用户名
     */
    private String username;
    /**
     * 密码
     */
    private String password;
    /**
     * 虚拟主机
     */
    private String virtualHost;

}

        RabbitTemplate和ConnectionFactory配置:

@Configuration
public class RabbitMqConfig {

    @Resource
    private MyRabbitMqConfig rabbitMqConfig;

    @Bean
    public RabbitTemplate rabbitTemplate(ConnectionFactory connectionFactory) {
        RabbitTemplate rabbitTemplate=new RabbitTemplate();
        rabbitTemplate.setConnectionFactory(connectionFactory);
        return rabbitTemplate;
    }

    @Bean
    public ConnectionFactory connectionFactory() {
        CachingConnectionFactory connectionFactory = new CachingConnectionFactory();
        connectionFactory.setHost(rabbitMqConfig.getHost());
        connectionFactory.setPort(rabbitMqConfig.getPort());
        connectionFactory.setUsername(rabbitMqConfig.getUsername());
        connectionFactory.setPassword(rabbitMqConfig.getPassword());
        connectionFactory.setVirtualHost(rabbitMqConfig.getVirtualHost());
        return connectionFactory;
    }

}

        这样通过配置yml中的spring.rabbitmq.enable属性即可,如果设置成true是启用,如果设置成false是禁用。

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
整合 RabbitMQ 可以让你的 Spring Boot 项目具备更好的异步处理和消息传递能力。下面是整合的步骤: 1. 添加 RabbitMQ 依赖 在 pom.xml 文件中添加以下依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency> ``` 2. 配置 RabbitMQ 在 application.properties 文件中添加以下配置: ``` spring.rabbitmq.host=localhost spring.rabbitmq.port=5672 spring.rabbitmq.username=guest spring.rabbitmq.password=guest ``` 如果你使用的是 RabbitMQ 的默认端口和默认用户,那么可以不用配置端口和用户名密码。 3. 创建消息接收者 ```java @Component public class Receiver { @RabbitListener(queues = "myQueue") public void processMessage(String content) { System.out.println("Received message: " + content); } } ``` 这里使用了 `@RabbitListener` 注解来监听名为 `myQueue` 的队列,并在接收到消息时打印出消息内容。 4. 创建消息发送者 ```java @Component public class Sender { @Autowired private RabbitTemplate rabbitTemplate; public void sendMessage(String message) { rabbitTemplate.convertAndSend("myQueue", message); } } ``` 这里使用了 `RabbitTemplate` 类来发送消息到名为 `myQueue` 的队列。 5. 测试 ```java @SpringBootTest class RabbitmqApplicationTests { @Autowired private Sender sender; @Test void testSendMessage() { sender.sendMessage("Hello, RabbitMQ!"); } } ``` 在测试方法中调用 `Sender` 的 `sendMessage` 方法发送消息。当消息被发送时,`Receiver` 中的 `processMessage` 方法会被自动调用,从而处理消息。 以上就是整合 RabbitMQ 的基本步骤,你可以根据自己的需求进行配置和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值