开启dubbo之旅——springboot整合dubbo+zookeeper

正经学徒,佛系记录,不搞事情

一、项目最终目录:

开启dubbo之旅——springboot整合dubbo+zookeeper_第1张图片

dubbo-provider:服务提供者

dubbo-consumer:服务消费者

dubbo-interface:消费者与提供者共同的接口层

由于dubbo的消费者与提供者都需要使用到共同的接口,因此本项目使用maven多模块构建项目,减少代码的重复

maven多模块构建项目可参考博客:https://blog.csdn.net/qq_31748587/article/details/84849520

二、创建一个springboot父工程:dubbo-parent

开启dubbo之旅——springboot整合dubbo+zookeeper_第2张图片

开启dubbo之旅——springboot整合dubbo+zookeeper_第3张图片

开启dubbo之旅——springboot整合dubbo+zookeeper_第4张图片

选中web起步依赖

开启dubbo之旅——springboot整合dubbo+zookeeper_第5张图片

删除无用的文件夹,只留pom.xml文件

修改打包方式为pom

pom

追加dubbo依赖和zookeeper客户端


	com.alibaba.boot
	dubbo-spring-boot-starter
	0.2.0




	org.apache.curator
	curator-framework
	2.12.0

以及module:


	dubbo-interface
	dubbo-provider
	dubbo-consumer

dubbo-parent项目作为父项目,子项目将自动继承依赖,子项目的pom.xml就不需要在重复写依赖的jar

三、创建一个服务提供者:dubbo-provider

开启dubbo之旅——springboot整合dubbo+zookeeper_第6张图片

剩下的同创建父工程的流程,最后注意项目路径

开启dubbo之旅——springboot整合dubbo+zookeeper_第7张图片

配置application.yml(或者application.properties,两者作用相同,只是格式不同)

server:
  port: 7003
dubbo:
  application:
    name: dubbo-provider    #服务名称
  registry:
    protocol: zookeeper     #注册中心的协议
    address: 127.0.0.1:2181 #注册中心的地址
  protocol:
    name: dubbo             #通信协议
    port: 20880             #通信端口
  monitor:
    protocol: registry      #连接监控中心

四、创建一个服务消费者:dubbo-consumer

步骤同三

配置application.yml

server:
  port: 7004
dubbo:
  application:
    name: dubbo-consumer    #服务名称
  registry:
    protocol: zookeeper     #注册中心的协议
    address: 127.0.0.1:2181 #注册中心的地址
  monitor:
    protocol: registry      #连接监控中心

五、创建一个接口项目:dubbo-interface

此项目只需要创建普通的maven项目

开启dubbo之旅——springboot整合dubbo+zookeeper_第8张图片

六、配置项目之间的依赖

dubbo-providerdubbo-consumer两者都依赖于dubbo-interface

pom.xml添加



	com.mn
	dubbo-interface
	0.0.1-SNAPSHOT

七、测试

  • 接口项目定义一个接口

开启dubbo之旅——springboot整合dubbo+zookeeper_第9张图片

public interface UserBS {
    UserDTO get();
}
  •  服务提供者提供实现接口

开启dubbo之旅——springboot整合dubbo+zookeeper_第10张图片

@Service
public class UserBSImpl implements UserBS{
    @Override
    public UserDTO get() {
        return new UserDTO("1","zhangsan",20);
    }
}

这里要注意的是,@Service的注解在这里是为了实现远程调用的,使用的是dubbo提供的注解

com.alibaba.dubbo.config.annotation.Service;

最后启动类添加注解@EnableDubbo

  • 服务消费者调用接口

开启dubbo之旅——springboot整合dubbo+zookeeper_第11张图片

消费者端是一个普通的springmvc项目

//控制类
@RestController
public class CallController {
    @Autowired
    private CallBS callBS;
    @GetMapping("get")
    public UserDTO get(){
        return callBS.getUser();
    }
}
//业务类
@Service
public class CallBSImpl implements CallBS {
    @Reference
    private UserBS userBS;

    @Override
    public UserDTO getUser() {
        return userBS.get();
    }
}

这里业务类的@Service注解是web注解

org.springframework.stereotype.Service;

@Reference注解作用同@Atuowire,注入接口项目提供的服务,与dubbo@Service结合使用

最终结果:

开启dubbo之旅——springboot整合dubbo+zookeeper_第12张图片

请求成功

项目地址:

https://pan.baidu.com/s/1UtxOXtAvMxlidi0N-MDqmA 提取码: 6313

你可能感兴趣的:(dubbo,java,springboot)