在 Spring Boot based on en value 中加载 Rabbit 或 IBM mq 配置

Load Rabbit or IBM mq config in Spring Boot based on en value

用例:我想根据代理值(env 变量)加载 IBM 或 RabbitMq 配置。我的听众(消息驱动的 POJO)正在单独工作。这是必需的,因为我的 DeV 和测试在 Rabbit 上运行,QA 和 Prod 在 IBM 上运行。

应用程序:Spring启动

我正在考虑加载基于环境的属性。

Appconfig.java

@Configuration
    @ConfigurationProperties(classpath: application-${spring.profile.active}-{config-broker}.properties)

//Broker value can be IBM, Rabbit or None

public MQQueueConnectionFactory mqQueueConnectionFactory(){
..
}

问题:如何确保我只加载 IBM 和 Rabbit 配置而不加载两者。

有没有办法只加载一个应用程序配置 class 和消息侦听器。

PS:使用单一配置(ibm/rabbit),我能够毫无问题地加载和启动我的侦听器。

正如其他人所说,您可能应该更改设置并使用 IBM MQ Advanced 进行开发。

不过,要回答您的问题,您可以简单地用 @ConditionalOnProperty 注释您的 @Beans 或整个 @Configuration 类,例如

@ConditionalOnProperty(name = "spring.profile.active", havingValue = "dev")
@Bean
// RabbitMQ...