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<UserRpcService> 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<UserRpcService> 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})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值