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"/>

重启测试

posted @ 2020-09-20 09:27  一半人生  阅读(1775)  评论(0编辑  收藏  举报