Dubbo入门(三)--spring boot整合dubbo创建提供者消费者

前言

dubbo框架与spring boot整合,不需要导入其他的包,也不需要繁琐的重复配置
我这里使用的是idea+gradle4.8+spring boot2.x构建本项目的接下来讲解如何配置
总体来说分为一下几个步骤
1.创建一个公共Module,把bean,和接口都写进此module
2.创建服务提供者,依赖公共Module
3.添加dubbo-spring boot依赖
4.编写配置文件
5.暴露服务Service
6.启动类上面加上EnableDubbo注解,启动
7.服务消费者,一样之

1.创建公共Module

File->new->project->spring boot项目,一个服务都不需要,直接创建


image.png

我这里只写了2个接口,然后公共Module创建完毕

2.创建服务提供者

新建spring boot项目,导入spring boot整合dubbo的依赖,添加这个依赖之后,里面的一些相关包都给你引入进来了,比如说zookeeper,dubbo,logback等等

implementation 'com.alibaba.boot:dubbo-spring-boot-starter:0.2.0'

然后依赖之前创建好的Module,File->Project Structure->Module->import Module->ok
然后我们编写Service 层,实现module层的UserService接口,

import com.alibaba.dubbo.config.annotation.Service;
import com.wocus.service.service.UserService;
import org.springframework.stereotype.Component;

/**
 * @program: dubbo_service01
 * @description: 用户服务实现类
 * @author: jiang wei
 * @create: 2019-03-18 11:52
 */
@Service(version = "1.0.0")
@Component
public class UserServiceImpl implements UserService {

    @Override
    public String selectByUserId(String id) {
        return "传递了一个值"+id+"使用的是20081服务器";
    }
}

注意:Service注解dubbo和这个同名,dubbo的Service是暴露服务,因此,我们需要在类上注明@Service注解,以前的Service注解用Component取而代之即可,这样,服务就暴露出去了

接下来就是配置文件

dubbo.application.name=dubbo-service01  #服务应用名
dubbo.registry.address=zookeeper://10.10.80.221:2181  //注册中心地址

dubbo.protocol.name=dubbo   //dubbo名称
dubbo.protocol.port=20881  //dubbo端口
dubbo.provider.loadbalance=random  //负载均衡算法
dubbo.monitor.protocol=registry  //自动发现服务

然后在启动类,注解@EnableDubbo启动,然后再看dubbo admin控制台,服务以及成功注册


image.png
3.创建服务消费者

和创建服务提供者一样,新建spring boot项目,依赖dubbo,然后编写Controller去消费服务,启动类上加上注解@EnableDubbo,编写配置文件

import com.alibaba.dubbo.config.annotation.Reference;
import com.wocus.service.service.UserService;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @program: dubbo_customer01
 * @description: 用户服务类
 * @author: jiang wei
 * @create: 2019-03-19 09:08
 */
@RestController
public class UserController {

    @Reference
    private UserService userService;

    @RequestMapping("/user")
    public String getUser(){
        return userService.selectByUserId("21");
    }

}

这里用dubbo的@Referenece注解就远程调用了另一台服务器的service了,打包DubboAdmin控制台也可以看得到,有消费服务了


image.png

基于dubbo的项目搭建已经完成了,后面文章,将讲解一些超时配置,实时检测,本地策略,dubbo直连等等

你可能感兴趣的:(Dubbo入门(三)--spring boot整合dubbo创建提供者消费者)