美文网首页
DubboAPI 配置使用方式

DubboAPI 配置使用方式

作者: 程序员的道路 | 来源:发表于2017-06-30 13:33 被阅读0次

    最近有这么个需求:做自动化的接口测试的时候需要动态更改zookper的配置

    以前用过Dubbo 但没有使用过Dubbo的API,于是查看了dubbo的官方教程 地址(http://dubbo.io/User+Guide-zh.htm#UserGuide-zh-%E6%9C%8D%E5%8A%A1%E6%8F%90%E4%BE%9B%E8%80%85)



    下边是官方给的例子

    (1) 服务提供者:

    importcom.alibaba.dubbo.rpc.config.ApplicationConfig;

    importcom.alibaba.dubbo.rpc.config.RegistryConfig;

    importcom.alibaba.dubbo.rpc.config.ProviderConfig;

    importcom.alibaba.dubbo.rpc.config.ServiceConfig;

    importcom.xxx.XxxService;

    importcom.xxx.XxxServiceImpl;

    // 服务实现

    XxxService xxxService =newXxxServiceImpl();

    // 当前应用配置

    ApplicationConfig application =newApplicationConfig();

    application.setName("xxx");

    // 连接注册中心配置

    RegistryConfig registry =newRegistryConfig();

    registry.setAddress("10.20.130.230:9090");

    registry.setUsername("aaa");

    registry.setPassword("bbb");

    // 服务提供者协议配置

    ProtocolConfig protocol =newProtocolConfig();

    protocol.setName("dubbo");

    protocol.setPort(12345);

    protocol.setThreads(200);

    // 注意:ServiceConfig为重对象,内部封装了与注册中心的连接,以及开启服务端口

    // 服务提供者暴露服务配置

    ServiceConfig service =newServiceConfig();// 此实例很重,封装了与注册中心的连接,请自行缓存,否则可能造成内存和连接泄漏

    service.setApplication(application);

    service.setRegistry(registry);// 多个注册中心可以用setRegistries()

    service.setProtocol(protocol);// 多个协议可以用setProtocols()

    service.setInterface(XxxService.class);

    service.setRef(xxxService);

    service.setVersion("1.0.0");

    // 暴露及注册服务

    service.export();


    (2) 服务消费者:

    importcom.alibaba.dubbo.rpc.config.ApplicationConfig;

    importcom.alibaba.dubbo.rpc.config.RegistryConfig;

    importcom.alibaba.dubbo.rpc.config.ConsumerConfig;

    importcom.alibaba.dubbo.rpc.config.ReferenceConfig;

    importcom.xxx.XxxService;

    // 当前应用配置

    ApplicationConfig application =newApplicationConfig();

    application.setName("yyy");

    // 连接注册中心配置

    RegistryConfig registry =newRegistryConfig();

    registry.setAddress("10.20.130.230:9090");

    registry.setUsername("aaa");

    registry.setPassword("bbb");

    // 注意:ReferenceConfig为重对象,内部封装了与注册中心的连接,以及与服务提供方的连接

    // 引用远程服务

    ReferenceConfig reference =newReferenceConfig();// 此实例很重,封装了与注册中心的连接以及与提供者的连接,请自行缓存,否则可能造成内存和连接泄漏

    reference.setApplication(application);

    reference.setRegistry(registry);// 多个注册中心可以用setRegistries()

    reference.setInterface(XxxService.class);

    reference.setVersion("1.0.0");

    // 和本地bean一样使用xxxService

    XxxService xxxService = reference.get();// 注意:此代理对象内部封装了所有通讯细节,对象较重,请缓存复用


    官方给的这个例子本以为可以直接套用 可现实就是这么残酷,用不了,于是开启了自己的探索之路

    public static voidmain(String[] args)throwsException {

    ClassPathXmlApplicationContext context =newClassPathXmlApplicationContext(newString[] {"applicationContext.xml"});

    context.start();

    // 当前应用配置

    ApplicationConfig application =newApplicationConfig();

    application.setName("hehe_consumer");

    // 连接注册中心配置

    RegistryConfig registry =newRegistryConfig();

    //这里一定要有  zookeeper://

    registry.setAddress("zookeeper://192.168.0.79:2181");

    // 注意:ReferenceConfig为重对象,内部封装了与注册中心的连接,以及与服务提供方的连接

    // 引用远程服务

    ReferenceConfig reference =newReferenceConfig();// 此实例很重,封装了与注册中心的连接以及与提供者的连接,请自行缓存,否则可能造成内存和连接泄漏

    reference.setApplication(application);

    reference.setRegistry(registry);// 多个注册中心可以用setRegistries()

    reference.setInterface(UserService.class);

    reference.setVersion("1.0");

    reference.setGroup("usercenter_soa_pro");

    // 和本地bean一样使用xxxService

    UserService userService =reference.get();// 注意:此代理对象内部封装了所有通讯细节,对象较重,请缓存复用

    UserDto userById = userService.getUserById(1);

    System.out.println(newGson().toJson(userById));

    System.in.read();

    }

    }

    相关文章

      网友评论

          本文标题:DubboAPI 配置使用方式

          本文链接:https://www.haomeiwen.com/subject/hngbcxtx.html