当前位置:首页 > 后端开发 > Dubbo泛化调用

Dubbo泛化调用

7个月前 (05-20)47

1. 使用背景

想要调用远程的方法,但发现没有api接口包,就无法直接引用,此时可以使用泛型调用,调用方可不用知道被调用方的具体细节;

2.Provider

package provider;

import com.alibaba.dubbo.config.ApplicationConfig;
import com.alibaba.dubbo.config.ProtocolConfig;
import com.alibaba.dubbo.config.RegistryConfig;
import com.alibaba.dubbo.config.ServiceConfig;
import service.GreetingService;
import service.impl.GreetingServiceImpl;

import java.io.IOException;

public class ApiProvider {
     
    public static void main(String[] args) throws IOException {
     
        //1.设置ServiceConfig实例
        ServiceConfig<GreetingService> serviceServiceConfig = new ServiceConfig<>();
        //2.设置应用程序配置
        serviceServiceConfig.setApplication(new ApplicationConfig("first-dubbo-provider"));
        //3.设置注册中心
        RegistryConfig registryConfig = new RegistryConfig("zookeeper://81.68.187.197:30002");

        serviceServiceConfig.setRegistry(registryConfig);
        //4.设置接口以及实现类
        serviceServiceConfig.setInterface(GreetingService.class);
        serviceServiceConfig.setRef(new GreetingServiceImpl());
        serviceServiceConfig.setProtocol(new ProtocolConfig("dubbo",-1));

//        serviceServiceConfig.getProvider().setPort((int)(20880+Math.random()*10));
        //5.设置分组与版本
        serviceServiceConfig.setVersion("1.0.0");
        serviceServiceConfig.setGroup("dubbo");
        serviceServiceConfig.setTimeout(500000);
        serviceServiceConfig.setLoadbalance("random");
        //6.设置线程池策略

        //HashMap<String, String> parameters = new HashMap<>();
        //parameters.put("threadpool","mythreadpool");
        //serviceServiceConfig.setParameters(parameters);
//        AsyncContext
        //7.导出
        serviceServiceConfig.export();
        System.out.println("success");
        System.in.read();
    }
}

3.Consumer

package generic;

import com.alibaba.dubbo.config.ApplicationConfig;
import com.alibaba.dubbo.config.ReferenceConfig;
import com.alibaba.dubbo.config.RegistryConfig;
import com.alibaba.dubbo.rpc.service.GenericService;

import java.util.HashMap;
import java.util.Map;

public class GenericConsumer {
     
    public static void main(String[] args) {
     
        ReferenceConfig<GenericService> referenceConfig = new ReferenceConfig<>();
        referenceConfig.setApplication(new ApplicationConfig("first-dubbo-config"));
        referenceConfig.setRegistry(new RegistryConfig("zookeeper://81.68.187.197:30002"));
        referenceConfig.setInterface("service.GreetingService");
        referenceConfig.setVersion("1.0.0");
        referenceConfig.setGroup("dubbo");
        referenceConfig.setGeneric(true);
        referenceConfig.setTimeout(500000);
        GenericService genericService = referenceConfig.get();
        HashMap<String, Object> map = new HashMap<>();
        map.put("id", "-100");
        map.put("name", "李源");

        Map<String,Object> testGeneric = (Map) genericService.$invoke("testGeneric", new String[]{
     "pojo.Pojo"}, new Object[]{
     map});
        System.out.println(testGeneric);

        Object hello = genericService.$invoke("sayHello", new String[]{
     "java.lang.String"}, new Object[]{
     "liyuan"});
        System.out.println(hello);
    }

}

作者:Yuan_xii
来源链接:https://blog.csdn.net/Yuan_xii/article/details/121019310

标签: Dubbo

“Dubbo泛化调用” 的相关文章

Dubbo面试25题

Dubbo面试25题

文章目录...

dubbo分布式服务框架初学

dubbo分布式服务框架初学

dubbo定义: dubbo是一个分布式服务框架,提供高性能和透明化的RPC远程服务调用方案和SOA服务处理方案。 核心:远程通讯,集群容错,自动发现 du...

新版 dubbo-admin 安装配置

新版 dubbo-admin 安装配置

资源的下载 https://github.com/apache/dubbo 下载完毕以后解压,主要文件夹有这几个 最新版本的dub...

Dubbo 序列化

Dubbo 序列化

前言 大家好,今天开始给大家分享 — Dubbo 专题之 Dubbo 序列化。在前一个章节中我们介绍了 Dubbo 路由规则之标签路由,其实现...

Spring Cloud Alibaba,Apache Dubbo 的基本应用

Spring Cloud Alibaba,Apache Dubbo 的基本应用

一、为什么要用dubbo 服务治理框架 服务的监控 服务的注册发现 服务的通信 服务的容错 服务的负载均衡 Sprin...

如何处理Dubbo调用超时

如何处理Dubbo调用超时

一、简述 同步调用是一种阻塞式的调用方式,即 Consumer 端代码一直阻塞等待,直到 Provider 端返回为止。dubbo 默认的协议...

Dubbo主要的异常类型及处理

一、DUBBO的主要异常类型 dubbo框架内的异常可以根据产生地点分为在provider端产生的异常和在consumer端产生的异常 在provider端产生的...

dubbo的springboot集成-01

dubbo的springboot集成-01

1.代码结构: 其中: 主项目:springboot-dubbo-demo   pom中都是子项目公共包 springboot-dubb...

dubbo暴露出HTTP服务

dubbo暴露出HTTP服务 点关注不迷路,欢迎再访! 精简博客内容,尽量已专业术语来分享。 努力做到对每一位认可...