栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Dubbo泛化调用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Dubbo泛化调用

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 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 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 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 map = new HashMap<>();
        map.put("id", "-100");
        map.put("name", "李源");

        Map 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);
    }

}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/353973.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号