是否可以阻止 Spring 引导应用程序尝试连接到 IBM MQ?
Is it possible to prevent a Spring Boot app from attempting to connect to IBM MQ?
我有一个 spring 引导应用程序,它使用 IBM Spring 引导启动程序连接到 IBM MessageQueue 服务:
com.ibm.mq:mq-jms-spring-boot-starter:2.1.2
我有一个组件 class 监听队列,它有以下注释 enable/disable 连接到队列:
@ConditionalOnProperty(name = "queue.enabled", havingValue = "true")
我的 application.properties 中还有以下 属性:
queue.enabled=false
当我连接到 ActiveMQ 时,此注释用于禁用队列连接,但是在更改代码库以连接到 IBM MQ 时,连接似乎不受 ConditionalOnProperty 的影响,并且始终尝试连接。
有没有办法在服务器启动时enable/disable连接到 IBM MQ 服务?
存在于 mq-jms-spring-boot-starter 依赖项中的 MQAutoConfiguration class 是导致尝试队列连接的原因。
您有两种选择来解决此问题,一种需要您设置特定的 属性,另一种允许您定义要用于启用或禁用队列连接的 属性 .
选项 1
在 application.properties 文件中设置值 spring.jta.enabled = false
。
(如果您在应用程序中使用事务,这可能不是首选选项。)
查看 MQAutoConfiguration class,您可以看到它以 属性 spring.jta.enabled
为条件。在 application.properties 文件中将 属性 设置为 false 将阻止 MQAutoConfiguration class 被注册,这意味着没有 MQ bean 被注册,因此不会尝试连接到队列。
选项 2(如果您不想禁用 JTA)
创建包 com.ibm.mq.spring.boot
并在那里创建 MQAutoConfiguration class 的副本。将 @ConditionalOnProperty
注释修改为您选择的 属性。
只需排除 application.properties
中的配置。
spring.autoconfigure.exclude=com.ibm.mq.spring.boot.MQAutoConfiguration
我有一个 spring 引导应用程序,它使用 IBM Spring 引导启动程序连接到 IBM MessageQueue 服务:
com.ibm.mq:mq-jms-spring-boot-starter:2.1.2
我有一个组件 class 监听队列,它有以下注释 enable/disable 连接到队列:
@ConditionalOnProperty(name = "queue.enabled", havingValue = "true")
我的 application.properties 中还有以下 属性:
queue.enabled=false
当我连接到 ActiveMQ 时,此注释用于禁用队列连接,但是在更改代码库以连接到 IBM MQ 时,连接似乎不受 ConditionalOnProperty 的影响,并且始终尝试连接。
有没有办法在服务器启动时enable/disable连接到 IBM MQ 服务?
存在于 mq-jms-spring-boot-starter 依赖项中的 MQAutoConfiguration class 是导致尝试队列连接的原因。
您有两种选择来解决此问题,一种需要您设置特定的 属性,另一种允许您定义要用于启用或禁用队列连接的 属性 .
选项 1
在 application.properties 文件中设置值 spring.jta.enabled = false
。
(如果您在应用程序中使用事务,这可能不是首选选项。)
查看 MQAutoConfiguration class,您可以看到它以 属性 spring.jta.enabled
为条件。在 application.properties 文件中将 属性 设置为 false 将阻止 MQAutoConfiguration class 被注册,这意味着没有 MQ bean 被注册,因此不会尝试连接到队列。
选项 2(如果您不想禁用 JTA)
创建包 com.ibm.mq.spring.boot
并在那里创建 MQAutoConfiguration class 的副本。将 @ConditionalOnProperty
注释修改为您选择的 属性。
只需排除 application.properties
中的配置。
spring.autoconfigure.exclude=com.ibm.mq.spring.boot.MQAutoConfiguration