zoukankan      html  css  js  c++  java
  • Zookeeper和Dubbo基本配置和调用

    Maven项目结构

    maven依赖

    <dubbo.version>2.6.2</dubbo.version>
    <zookeeper.version>3.4.13</zookeeper.version>
    <curator-framework.version>4.0.1</curator-framework.version>
    
    <!--dubbo-->
    <dependency>
         <groupId>com.alibaba</groupId>
         <artifactId>dubbo</artifactId>
         <version>${dubbo.version}</version>
    </dependency>
    <!--zookeeper-->
    <dependency>
         <groupId>org.apache.zookeeper</groupId>
         <artifactId>zookeeper</artifactId>
         <version>${zookeeper.version}</version>
    </dependency>
    <!--zookeeper client-->
    <dependency>
         <groupId>org.apache.curator</groupId>
         <artifactId>curator-framework</artifactId>
         <version>${curator-framework.version}</version>
    </dependency>

     

    • 顶层项目提供包版本管理。
    • 接口提供者提供常用pojo类和接口,以及jar依赖。
    • 消费者依赖接口提供者并且订阅和使用服务。
    • 服务提供者依赖接口提供者,提供service实现和详细服务,然后向zookeeper注册和暴露,被消费者调用。

    以windows开启zookeeper

     可以看到配置的端口号,我们将往此服务中注册服务

     接口提供者

    之提供了类和接口,不多赘述

    服务提供者

     实现类,对service接口进行服务的实现(半注解配置文章最后补充)

    public class UserServiceImpl implements UserService {
        @Override
        public List<User> findAll() {
            System.out.println("查询所有~~~");
            return null;
        }
    }

    主要配置SpringDubbo.xml 

    <!--    配置dubbo的应用名称-->
    <dubbo:application name="dubbo-server"/>
    <!--    配置dubbo注册中心Zookeeper地址-->
    <dubbo:registry address="zookeeper://127.0.0.1:2181"/>
    <!--    配置dubbo协议名称和服务端口(仅服务提供者配置-->
    <dubbo:protocol name="dubbo" port="8888"/>
    <!--    配置注解扫描  注解使用-->
    <!--    <dubbo:annotation package="cn.zys.serviceImpl"/>-->
    <!--指定暴露的服务接口及实例-->
    <dubbo:service interface="cn.zys.service.UserService" ref="userService"/>
    <!--配置业务类实例 这种单个配置不适合批量注入,上面注释掉的注解下面详细配置 -->
    <bean id="userService" class="cn.zys.serviceImpl.UserServiceImpl"/>

    web.xml 加载配置文件

    <context-param>
       <param-name>contextConfigLocation</param-name>
       <param-value>classpath*:SpringDubbo.xml</param-value>
    </context-param>
    <listener>
       <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    最后配置好tomcat运行即可。

    消费者

     暴露给用户的controller,这里不是用@Controller是因为没使用注解方式

    @RequestMapping("user")
    public class UserController {
    
        UserService userService;
    
        public void setUserService(UserService userService) {
            this.userService = userService;
        }
    
        @RequestMapping("getUser")
        @ResponseBody
        public String getUser(){
            List<User> all = userService.findAll();
            System.out.println(all);
            return "成功";
        }
    }

    SpringMvcDubbo.xml

    <!--    扫描controller-->
    <context:component-scan base-package="cn.zys.controller"/>
    <!--    配置dubbo的应用名称-->
    <dubbo:application name="dubbo-client"/>
    <!--    配置dubbo注册中心Zookeeper地址-->
    <dubbo:registry address="zookeeper://127.0.0.1:2181"/>
    <!--    配置dubbo注解包扫描,后续注解远程Service时使用-->
    <dubbo:consumer check="false"/><!-- 启动时不检查是否有提供者,可避免空指针问题-->
    <!-- dubbo自动扫包,注解远程Service时使用-->
    <!--    <dubbo:annotation package="cn.zys.controller"/>-->
    <!--订阅远程服务对象-->
    <dubbo:reference id="userService" interface="cn.zys.service.UserService"/>
    <!--    配置需要暴露的业务接口及实例-->
    <!--初始化控制器,并把远程service 注入到controller -->
    <bean class="cn.zys.controller.UserController" >
        <property name="userService" ref="userService"/>
    </bean>

    web.xml 用户端需要页面支持

    <servlet>
       <servlet-name>dispatcherServlet</servlet-name>
       <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
      <init-param>
           <param-name>contextConfigLocation</param-name>
           <param-value>classpath*:SpringMvcDubbo.xml</param-value>
       </init-param>
       <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
       <servlet-name>dispatcherServlet</servlet-name>
       <url-pattern>/</url-pattern>
    </servlet-mapping>

     分别开启

    扩展半注解配置

    更改服务提供者xml配置

    <dubbo:application name="dubbo-server"/>
    <!--    配置dubbo注册中心Zookeeper地址-->
    <dubbo:registry address="zookeeper://127.0.0.1:2181"/>
    <!--    配置dubbo协议名称和服务端口(仅服务提供者配置-->
    <dubbo:protocol name="dubbo" port="8888"/>
    <!--    配置注解扫描  注解使用-->
    <dubbo:annotation package="cn.zys.serviceImpl"/>
    <!--指定暴露的服务接口及实例-->
    <!--    <dubbo:service interface="cn.zys.service.UserService" ref="userService"/>-->
    <!--配置业务类实例-->
    <!--    <bean id="userService" class="cn.zys.serviceImpl.UserServiceImpl"/>-->

    使用dubbo的注解

     更改消费者

    <!--    扫描controller-->
    <context:component-scan base-package="cn.zys.controller"/>
    <!--    配置dubbo的应用名称-->
    <dubbo:application name="dubbo-client"/>
    <!--    配置dubbo注册中心Zookeeper地址-->
    <dubbo:registry address="zookeeper://127.0.0.1:2181"/>
    <!--    配置dubbo注解包扫描,后续注解远程Service时使用-->
    <dubbo:consumer check="false"/><!-- 启动时不检查是否有提供者,可避免空指针问题-->
    <!-- dubbo自动扫包,注解远程Service时使用-->
    <dubbo:annotation package="cn.zys.controller"/>

    重启测试

  • 相关阅读:
    Django-Auth组件
    Django-choice用法
    Django-Cookie和session组件
    Django-DRF
    Django-DRF分页器
    Django-DRF全局异常捕获,响应封装,自动生成接口文档
    Java学习路线一张图足够
    Java基础内容总结
    java基础学习之反射反射的基本概念及使用
    Java基础的方法使用详解
  • 原文地址:https://www.cnblogs.com/xiaozhang666/p/13698774.html
Copyright © 2011-2022 走看看