美文网首页Dubbo
4. 使用spring-boot-starter-dubbo

4. 使用spring-boot-starter-dubbo

作者: 茶铺里的水 | 来源:发表于2018-04-18 11:50 被阅读151次

    spring-boot-start-dubbo,是spring-boot与dubbo有机结合的桥梁,根据spring-boot规范实现,使dubbo的使用变得及其简单快捷,容易上手,而且省去了xml的配置。让dubbo小白正常使用dubbo,只需一盏茶的功夫。

    一、引入依赖

    dependency>
        <groupId>com.gitee.reger</groupId>
        <artifactId>spring-boot-starter-dubbo</artifactId>
        <version>1.1.1</version>
    </dependency>
    

    二、定义服务接口,在api项目中添加如下

    package com.my;
    
    /**
     * hello service
     * @author mk
     */
    public interface HelloService {
        /**
         * dubbo测试接口
         * @param param param
         * @return result
         */
        String hello(String param);
    }
    

    三、设置provider,在provider项目执行如下操作

    1. 修改application.yml,添加如下内容

    #dubbo provider
    spring:
      dubbo:
        application:
          name: demo-provider
        base-package: com.my.provider      # dubbo服务发布者所在的包
        registry:
          address: 127.0.0.1              # zookeeper注册中心的地址
          port: 2181                           # zookeeper注册中心的端口
        protocol:
          name: dubbo
          serialization: hessian2
        provider:
          retries: 0                           # 服务调用重试次数,服务发布者不给重试,让服务调用者自己重试
    

    2. 修改实现,在实现类上引入dubbo的service注解

    package com.my.provider;
    
    import com.alibaba.dubbo.config.annotation.Service;
    import com.my.HelloService;
    
    /**
     * hello service
     * @author mk
     */
    @Service
    public class HelloServiceImpl implements HelloService{
    
        @Override
        public String hello(String param) {
            return "provider get param success,param is " + param;
        }
    }
    

    四、设置consumer,在consumer项目上执行如下操作

    1. 修改application.yml,添加如下内容

    #dubbo
    spring:
      dubbo:
        application:
          name: demo-consumer
        base-package: com.my  # dubbo服务调用者所在的包
        registry:
          address: 127.0.0.1                  # zookeeper注册中心的地址
          port: 2181                           # zookeeper注册中心的端口
        consumer:
          timeout: 1000
          check: true                          # 服务启动时检查被调用服务是否可用
          retries: 2                           # 服务调用重试次数
    

    2. 调用代码示例,通过Reference或Inject注解,注入对象

    package com.my.controller;
    
    import com.alibaba.dubbo.config.annotation.Reference;
    import com.my.HelloService;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    /**
     * hello controller
     * @author mk
     */
    @RestController
    public class HelloController {
    
        @Reference
        private HelloService helloService;
    
        @RequestMapping("/hello")
        public String hello(HttpServletRequest request, HttpServletResponse response){
            String result = helloService.hello("consumer params...");
            return result;
        }
    }
    

    四、测试

    分别启动provider和consumer,完毕后调用consumer的hello接口返回如下

    image.png

    五、注意事项

    1. provider的接口实现的@service注解一定要引用dubbo的注解,不要写成spring的
    2. consumer中引入对象,需要用到dubbo的@Inject或@Reference
    

    文章参考:
    1. spring-boot-start-dubbo
    2. 原来dubbo发布服务如此简单

    相关文章

      网友评论

      本文标题:4. 使用spring-boot-starter-dubbo

      本文链接:https://www.haomeiwen.com/subject/fydvkftx.html