我有一个 Spring Boot 应用程序,它使用 IBM Spring Boot starter 连接到 IBM MessageQueue 服务:
com.ibm.mq:mq-jms-spring-boot-starter:2.1.2
我有一个监听队列的组件类,它有以下注释来启用/禁用连接到队列:
@ConditionalOnProperty(name = "queue.enabled", havingValue = "true")
我的 application.properties 中还有以下属性:
queue.enabled=false
当我连接到 ActiveMQ 时,此注释用于禁用队列连接,但是在更改代码库以连接到 IBM MQ 时,连接似乎不受 ConditionalOnProperty 的影响并且总是尝试连接。
有没有办法在服务器启动时启用/禁用连接到 IBM MQ 服务?
mq-jms-spring-boot-starter依赖项中存在的 MQAutoConfiguration 类是导致尝试队列连接的原因。
您有两个选项可以解决此问题,一个要求您设置特定属性,另一个允许您定义要用于启用或禁用队列连接的属性。
选项1
spring.jta.enabled = false
在application.properties文件中设置该值。(如果您在应用程序中使用事务,这可能不是首选选项。)
查看 MQAutoConfiguration 类,您可以看到它以属性为条件spring.jta.enabled
。在application.properties文件中将该属性设置为 false将阻止注册 MQAutoConfiguration 类,这意味着不会注册 MQ bean,因此不会尝试连接到队列。
选项 2(如果您不想禁用 JTA)
创建包com.ibm.mq.spring.boot
并在那里创建MQAutoConfiguration类的副本。将@ConditionalOnProperty
注释修改为您选择的属性。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句