You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用由其他Jenkins插件创建的MQConnection类实例?

在Jenkins插件中复用mq-notifier-plugin的MQConnection实例

我来帮你梳理下怎么在自己的Jenkins插件里正确获取并使用mq-notifier-plugin维护的MQConnection实例,步骤和注意事项如下:

1. 确认依赖配置的正确性

你已经在POM里添加了依赖,但要注意Jenkins插件开发的依赖范围,建议加上<scope>provided</scope>,因为mq-notifier-plugin是作为Jenkins的运行时插件存在的,不需要打包到你自己的插件JAR里,避免类加载冲突:

<dependency>
    <groupId>com.sonymobile.jenkins.plugins.mq</groupId>
    <artifactId>mq-notifier</artifactId>
    <version>1.2.5</version>
    <scope>provided</scope> <!-- 关键:标记为运行时提供 -->
</dependency>

2. 获取MQConnection实例

mq-notifier-plugin的MQ连接是通过全局配置类管理的,你可以通过它的全局配置实例来获取已维护的MQConnection:

import com.sonymobile.jenkins.plugins.mq.mqnotifier.MQNotifierGlobalConfig;
import com.sonymobile.jenkins.plugins.mq.mqnotifier.MQConnection;

// 获取mq-notifier的全局配置实例
MQNotifierGlobalConfig mqConfig = MQNotifierGlobalConfig.get();
// 从配置中获取已维护的MQConnection实例
MQConnection mqConnection = mqConfig.getMQConnection();

3. 使用实例的注意事项

  • 检查实例有效性:使用前务必判断实例是否为空,以及连接是否存活:
    if (mqConnection != null && mqConnection.isConnected()) {
        // 执行你的MQ操作,比如发送消息
        mqConnection.sendMessage("your-exchange", "your-routing-key", "message-content");
    }
    
  • 处理异常:MQ操作可能抛出异常,记得捕获并处理(比如com.rabbitmq.client.ShutdownSignalException或者插件自定义的异常):
    try {
        if (mqConnection != null && mqConnection.isConnected()) {
            mqConnection.sendMessage("exchange", "key", "content");
        }
    } catch (Exception e) {
        // 记录日志或处理异常
        LOGGER.log(Level.SEVERE, "Failed to send MQ message", e);
    }
    
  • 不要手动创建实例:不要自己new MQConnection(),因为插件已经全局维护了一个连接实例,重复创建会导致资源浪费和连接冲突。

4. 排查问题小技巧

如果找不到获取实例的方法,可以去查看mq-notifier-plugin的源码:

  • 它的全局配置类MQNotifierGlobalConfig继承了Jenkins的GlobalConfiguration,通常这类类会提供get()静态方法获取单例
  • 查看MQConnection类的调用关系,确认插件是如何维护这个实例的

内容的提问来源于stack exchange,提问作者Dacto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:29:39