zoukankan      html  css  js  c++  java
  • Dubbo 基础用法

    Provider 配置详解 

    配置Dubbo Provider有4种方式:XML配置,properties方式配置,API调用方式配置,注解方式配置。

    这里主要讲下代码配置 其他方式的配置后面来说。

    import com.alibaba.dubbo.rpc.config.ApplicationConfig;
    import com.alibaba.dubbo.rpc.config.RegistryConfig;
    import com.alibaba.dubbo.rpc.config.ProviderConfig;
    import com.alibaba.dubbo.rpc.config.ServiceConfig;
    import com.xxx.XxxService;
    import com.xxx.XxxServiceImpl;
    
    // 服务实现
    XxxService xxxService = new XxxServiceImpl();
    
    // 当前应用配置
    ApplicationConfig application = new ApplicationConfig();
    application.setName("xxx");
    
    // 连接注册中心配置
    RegistryConfig registry = new RegistryConfig();
    registry.setAddress("10.20.130.230:9090");
    registry.setUsername("aaa");
    registry.setPassword("bbb");
    
    // 服务提供者协议配置
    ProtocolConfig protocol = new ProtocolConfig();
    protocol.setName("dubbo");
    protocol.setPort(12345);
    protocol.setThreads(200);
    
    // 注意:ServiceConfig为重对象,内部封装了与注册中心的连接,以及开启服务端口
    
    // 服务提供者暴露服务配置
    ServiceConfig<XxxService> service = new ServiceConfig<XxxService>(); // 此实例很重,封装了与注册中心的连接,请自行缓存,否则可能造成内存和连接泄漏
    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();

    Provider 接口和实现

    这个例子中只有一个服务UserReadService,有一个方法 getUserById。 需要将这个服务通过Dubbo暴露给远程的服务。具体的步骤如下:

    1.创建工程 如果本来已经有工程,可以忽略。创建一个spring boot工程,可以通过 https://start.spring.io/ 创建。 2.定义接口 定义接口:UserReadService

    public interface UserReadService{
    public User getUserById(Long userId);
    }

    这个接口一般来说会放到独立的jar包里,作为client包。 其他应用要消费这个服务的时候,一般来说需要应用引用这个client包。(除了泛化调用) 3.实现接口 实现UserReadService, 当前实现部署在Provider的应用中。

    public UserReadServiceImpl implements UserReadService{
        public User getUserById(Long userId){
            return xxx;
        }
    }

    Dubbo配置:

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">  
        <dubbo:application name="hello-world-app" />  
        <dubbo:registry address="multicast://224.5.6.7:1234" />  
        <dubbo:protocol name="dubbo" port="20880" />  
        <bean id="userReadService" class="com.package.UserReadServiceImpl"/>
        <dubbo:service interface="com.package.UserReadService" ref="userReadService" />  
    </beans>
  • 相关阅读:
    Qt uchar * 转 QImage
    WIN10 蓝牙连接音箱之后,音量调节无效,音量从1-100,声音一样大,都是最大声,可以静音(解决方案)
    OpenGL 保存bmp图像
    Qt 使用自带的OpenGL模块开发程序
    OpenCVSharp介绍
    OpenCV介绍
    OpenAL介绍
    OpenCL介绍
    OpenGL介绍
    Qt 无法打开包括文件:“QGLWidget”: No such file or directory
  • 原文地址:https://www.cnblogs.com/xujie520/p/15243060.html
Copyright © 2011-2022 走看看