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

dubbo之使用API方式配置

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

dubbo之使用API方式配置

写在前面

dubbo提供的常用配置方式有以下四种:

1:API配置
2:属性配置
3:xml配置
4:注解配置

本文我们来一起看下第一种方式,即API配置。

在这篇文章 基础上进行改造(参考的基于springboot,这里用不到,我只是为了图省事直接在此基础上改了,其实引入dubbo相关依赖后,直接写普通的main方法就可以了)。源码 。

1:rpc-service-provider-apiconfig

删除application.yml,dubbo.xml配置文件,然后修改ProviderApplication如下:

public class ProviderApplication {

    public static void main(String[] args) {
        // 当前应用配置
        ApplicationConfig applicationConfig = new ApplicationConfig();
        applicationConfig.setName("user-service-provider11191458");
        // 连接注册中心配置
        RegistryConfig registryConfig = new RegistryConfig();
        registryConfig.setProtocol("zookeeper");
        registryConfig.setAddress("127.0.0.1:2181");
        // 服务提供者协议配置
        ProtocolConfig protocolConfig = new ProtocolConfig();
        protocolConfig.setName("dubbo");
        protocolConfig.setPort(20880);
        protocolConfig.setThreads(100);
        // 暴露服务
        ServiceConfig serviceConfig = new ServiceConfig<>();
        serviceConfig.setApplication(applicationConfig);
        serviceConfig.setRegistry(registryConfig); // 设置注册地址
        serviceConfig.setProtocol(protocolConfig); // 设置协议
        serviceConfig.setInterface(UserRpcService.class);
        serviceConfig.setRef(new UserRpcServiceImpl()); // 设置具体实现类
        serviceConfig.export(); // 完成暴露

        new Scanner(System.in).next();

    }
}

注意删除了@SpringbootApplication注解和@importResource注解。

2:rpc-service-consumer-apiconfig

删除application.yml,dubbo.xml配置文件,然后修改ConsumerApplication如下:

public class ConsumerApplication {
    private static final Logger logger = LoggerFactory.getLogger("consumer_ConsumerApplication");
    public static void main(String[] args) {
        // 应用配置
        ApplicationConfig applicationConfig = new ApplicationConfig();
        applicationConfig.setName("user-service-consumer11191521");
        // 连接注册中心,获取服务提供者的信息
        RegistryConfig registryConfig = new RegistryConfig();
        registryConfig.setProtocol("zookeeper");
        registryConfig.setAddress("127.0.0.1:2181");
        //服务提供者协议配置
        ProtocolConfig protocol = new ProtocolConfig();
        protocol.setName("dubbo");
        protocol.setPort(20880);
        protocol.setThreads(100);

        //引用远程服务
        //
        //注意:ReferenceConfig为重对象,内部封装了与注册中心的连接,以及与服务提供方的连接
        //     此实例很重,封装了与注册中心的连接以及与提供者的连接,请自行缓存,否则可能造成内存和连接泄漏
        ReferenceConfig reference = new ReferenceConfig<>();
        reference.setApplication(applicationConfig);
        reference.setRegistry(registryConfig);        //多个注册中心可以用setRegistries()
        reference.setInterface(UserRpcService.class);

        // 获取对象,像调用本地的一个对象一样调用,内部通过netty进行远程调用
        UserRpcService userRpcService = reference.get();
        UserDTO userDTO = userRpcService.get(1000000);
        logger.info("[通过API配置方式,获得用户为({})", userDTO);

    }
}

注意删除了@SpringbootApplication注解和@importResource注解。

3:启动测试

启动服务提供者,然后启动消费者,看到如下输出即为成功:

2021-11-19 17:09:58  INFO consumer_ConsumerApplication:40 - [通过API配置方式,获得用户为(UserDTO{id=1000000, name='没有昵称:1000000', gender=1})
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/572597.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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