渣渣高不会写Java 2025-03-30 21:40 采纳率: 0%
浏览 13

MetadataService使用时报错。Dubbo怎么获取接口信息(接口名、入参出参)

Dubbo怎么获取到其他服务中的接口信息(接口名,入参、出参),我问DeepSeek后,尝试通过metadatService获取,但是DEMO写出来后,项目有报错:有人能帮忙看看报错么,之前没用过dubbo。
org.apache.dubbo.rpc.RpcException: Failed to invoke the method getExportedURLs in the service org.apache.dubbo.metadata.MetadataService. No provider available for the service org.apache.dubbo.metadata.MetadataService:1.0.0 from registry 127.0.0.1:20880 on the consumer 192.168.136.247 using the dubbo version 3.2.0-beta.4. Please check if the providers have been started and registered.

Provider的配置文件

img


Consumer获取metadataService获取错误

img

  • 写回答

3条回答 默认 最新

  • 阿里嘎多学长 2025-03-30 21:40
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    Dubbo获取接口信息

    Dubbo 提供了多种方式来获取接口信息,下面都是可行的解决方案:

    1. 使用 Dubbo API:Dubbo 提供了一个 API 来获取接口信息,可以使用 DubboServiceConfig 对象来获取接口信息。
    ServiceConfig serviceConfig = new ServiceConfig();
    List<ServiceConfig> serviceConfigs = serviceConfig.getServiceConfigs();
    for (ServiceConfig serviceConfig : serviceConfigs) {
        String interfaceName = serviceConfig.getInterfaceName();
        List<MethodConfig> methodConfigs = serviceConfig.getMethodConfigs();
        for (MethodConfig methodConfig : methodConfigs) {
            String methodName = methodConfig.getMethodName();
            List<ParameterConfig> parameterConfigs = methodConfig.getParameterConfigs();
            // 获取入参和出参信息
            for (ParameterConfig parameterConfig : parameterConfigs) {
                String parameterName = parameterConfig.getParameterName();
                // ...
            }
        }
    }
    
    1. 使用 Dubbo SPI:Dubbo 提供了一个 SPI(Service Provider Interface)来获取接口信息,可以在 DubboSPI 中注册一个 Service 来获取接口信息。
    public class InterfaceInfoService implements Service {
        @Override
        public void sayHello() {
            // 获取接口信息
            List<ServiceConfig> serviceConfigs = getInterfaceConfigs();
            for (ServiceConfig serviceConfig : serviceConfigs) {
                String interfaceName = serviceConfig.getInterfaceName();
                List<MethodConfig> methodConfigs = serviceConfig.getMethodConfigs();
                for (MethodConfig methodConfig : methodConfigs) {
                    String methodName = methodConfig.getMethodName();
                    List<ParameterConfig> parameterConfigs = methodConfig.getParameterConfigs();
                    // 获取入参和出参信息
                    for (ParameterConfig parameterConfig : parameterConfigs) {
                        String parameterName = parameterConfig.getParameterName();
                        // ...
                    }
                }
            }
        }
    }
    
    1. 使用 Dubbo Console:Dubbo 提供了一个 Console 来获取接口信息,可以在 Dubbo Console 中查看接口信息。

    需要注意的是,获取接口信息需要在 DubboSPI 中注册一个 Service,或者使用 Dubbo API 来获取接口信息。

    评论

报告相同问题?

问题事件

  • 修改了问题 3月30日
  • 创建了问题 3月30日