gpt4 book ai didi

java - 是否可以阻止 Spring Boot 应用程序尝试连接到 IBM MQ?

转载 作者:行者123 更新时间:2023-12-02 09:36:56 34 4
gpt4 key购买 nike

我有一个 Spring Boot 应用程序,它使用 IBM Spring Boot 启动器连接到 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

在您的 application.properties 文件中设置值 spring.jta.enabled = false。(如果您在应用程序中使用事务,这可能不是首选选项。)

查看 MQAutoConfiguration 类,您可以看到它以属性 spring.jta.enabled 为条件。在 application.properties 文件中将该属性设置为 false 将阻止注册 MQAutoConfiguration 类,这意味着不会注册任何 MQ bean,因此不会尝试连接到队列。

选项 2(如果您不想禁用 JTA)

创建包com.ibm.mq.spring.boot并在其中创建MQAutoConfiguration类的副本。将 @ConditionalOnProperty 注释修改为您选择的属性。

关于java - 是否可以阻止 Spring Boot 应用程序尝试连接到 IBM MQ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57427596/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com