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

Mule SDK自定义连接器问题:无法通过@MetadataKeyId获取元数据键

排查Mule SDK自定义连接器元数据键不显示的问题

我来帮你一步步排查这个type字段无法填充预期元数据键的问题,结合你的代码和Mule SDK 1.1的规范,重点看这几个方向:

1. 检查@MetadataKeyId注解的写法是否正确

你的代码里写的是:

public void select(@MetadataKeyId(RecordKeysResolver.class) String type) {
}

但Mule SDK 1.1中@MetadataKeyId注解需要通过resolver属性指定解析器类,正确写法应该是:

public void select(@MetadataKeyId(resolver = RecordKeysResolver.class) String type) {
}

这是最可能导致解析器不生效的核心原因——注解参数传递错误,Mule无法识别到你的RecordKeysResolver类。

2. 确认RecordKeysResolver的包导入与代码细节

  • 确保你导入的TypeKeysResolver是Mule SDK的官方类:org.mule.metadata.api.resolving.TypeKeysResolver,不要导入其他同名类。
  • 检查getKeys方法中的StringUtils.removeEnd是否正常工作:如果StringUtils未正确导入(比如Apache Commons Lang的org.apache.commons.lang3.StringUtils),会导致运行时异常,元数据生成失败。可以暂时替换成手动截取字符串测试,比如:
    builder.withDisplayName(id.substring(0, id.length() - 3)); // 替代StringUtils.removeEnd(id, "_id")
    

3. 验证操作类与扩展类的关联

你的WeatherConnectrOperations类需要被关联到一个标注了@Extension的扩展类中,否则Mule无法识别这个操作的元数据配置。比如创建对应的扩展类:

@Extension(name = "WeatherConnectr")
public class WeatherConnectrExtension {
    @Operations
    private WeatherConnectrOperations operations;

    // 提供构造器让Mule注入操作类实例
    public WeatherConnectrExtension() {
        this.operations = new WeatherConnectrOperations();
    }
}

4. 检查解析器是否被触发

在RecordKeysResolver的getKeys方法中,你加了System.out.println("Hello"),可以启动Mule应用后查看控制台输出:

  • 如果没有打印"Hello",说明解析器根本没被调用,大概率是注解写法错误或者操作类未关联到扩展类。
  • 如果打印了但依然没有元数据键,检查MetadataKey的构建是否正确:确保builder.build()返回的对象包含有效的id和displayName。

5. 清理构建缓存并重新部署

有时候旧的构建缓存会导致元数据未更新,执行以下操作:

  • 清空Maven的target目录(或者Gradle的build目录)
  • 重新执行mvn clean install构建项目
  • 重启Mule应用并重新查看连接器的元数据配置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:07:23