在 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...
用例:我想根据代理值(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...