spring boot2.0集成Dubbo框架

spring boot2.0和以前的1.5及往前的整合方式是万全不一样的,命名、依赖jar包、书写方式都发生了改变。
集成Dubbo的前提是需要使用Zookeeper注册中心,安装教程

Dubbo支持的协议

Dubbo支持Dubbo、rmi、 hessian、 http、webservice、 thrift、 redis等多种协议,但是Dubbo官网是推荐我们使用Dubbo协议的。

Maven的三种类型

jar: 打成jar包
pom:依赖被被人继承的 公共依赖 字符模块
war:达成一个web项目 里面包含jar包、WEB-INF

Dubbo目录结构

1wxw-dubbo-parent //pom类型 公共的依赖信息
1.2wxw-dubbo-public-api-service //pom类型 提供会员接口 jar类型 pom项目没有Java代码的哦
1.2.1wxw-dubbo-public-api-member-service //jar类型
1.3wxw-dubbo-api-member-service-impl //jar类型 会员接口实现类(这个不是公开的) (点击parent创建的,需要引入 实现的interface )
1.4wxw-dubbo-order-web //jar(springboot) 订单项目 调用会员项目 ps:订单调用会员时候 引入公共接口 底层调用dubbo协议 帮助实现 *(dubbo原理 拿到类的class的地址信息,反射。)
在这里插入图片描述
在这里插入图片描述

创建Dubbo生产者会员服务

  1. 先创建Maven项目pom类型:wxw-dubbo-parent

在pom中引入共同依赖

<project xmlns="http://maven.apache.org/POM/4.0.0"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.wxw</groupId>
	<artifactId>wxw-dubbo-parent</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>pom</packaging>
	<name>wxw-dubbo-parent</name>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.2.1.RELEASE</version>
	</parent>
	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>1.8</java.version>
		<curator-framework.version>4.0.1</curator-framework.version>
		<zookeeper.version>3.4.13</zookeeper.version>
		<dubbo.starter.version>0.2.0</dubbo.starter.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>com.alibaba.boot</groupId>
			<artifactId>dubbo-spring-boot-starter</artifactId>
			<version>${dubbo.starter.version}</version>
		</dependency>

	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>
	//这是它的子模块
	<modules>
		<module>wxw-dubbo-public-api-service</module>
		<module>wxw-dubbo-api-member-service-impl</module>
		<module>wxw-dubbo-order-web</module>
	</modules>
</project>

PS:如果需要写版本号的 springboot没有帮你整合 如果不需要写版本号 已经帮忙整合了
2. 在parent 下创建Maven项目pom类型:wxw-dubbo-public-api-service
3. 在wxw-dubbo-public-api-service下创建Maven项目jar类型:wxw-dubbo-public-api-member-service(写接口 interface)

package com.wxw.api.member.service;

public interface MemberService {
	//会员接口
	public String getUser();
}
  1. 在parent下创建Maven项目jar类型:wxw-dubbo-api-member-service-impl并且 引入: wxw-dubbo-public-api-member-service,实现它。

引入: wxw-dubbo-public-api-member-service

	<dependencies>
		<dependency>
			<groupId>com.wxw</groupId>
			<artifactId>wxw-dubbo-public-api-member-service</artifactId>
			<version>0.0.1-SNAPSHOT</version>
		</dependency>
	</dependencies>

写核心配置文件application.properties

#服务器接口
server.port=8084
#dubbo名字
dubbo.application.name=member
#采用的协议
dubbo.protocol.name=dubbo
#采用的发布端口号
dubbo.protocol.port=20884
#dubbo注册中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181

写实现类:

package com.wxw.api.member.service.impl;

import org.springframework.beans.factory.annotation.Value;

import com.alibaba.dubbo.config.annotation.Service;
import com.wxw.api.member.service.MemberService;

@Service // 注意:此处采用的是Dubbo的注解,而不是Spring的注解。
public class MemberServiceImpl implements MemberService {
	@Value("${dubbo.protocol.port}")
	private String dubboport;

	@Override
	public String getUser() {
		System.out.println("订单服务调用会员服务,Dubbo端口号为" + dubboport);
		return "订单服务调用会员服务成功,Dubbo端口号为" + dubboport;
	}

}

写启动类

package com.wxw.api.member.service.impl;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;

@EnableDubbo // 表示开启Dubbo,此注解必须写
@SpringBootApplication
public class AppMember {
	public static void main(String[] args) {
		SpringApplication.run(AppMember.class, args);
	}
}

发布生产者会员服务

这里需要使用Zookeeper数据查看工具ZooInspector
下载教程
运行启动类:AppMember.java
效果图,证明Dubbo服务运行成功
在这里插入图片描述

创建订单服务调用会员服务

  1. 在parent 下创建Maven项目jar类型:wxw-dubbo-order-web,然后引入接口依赖!(wxw-dubbo-public-api-member-service)
  2. 创建Controller类
package wxw.order.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.alibaba.dubbo.config.annotation.Reference;
import com.wxw.api.member.service.MemberService;

@RestController
public class OrderController {
	@Reference // 使用dubbo提供的@Reference,而不是@Autowired
	private MemberService memberService;

	@RequestMapping("/orde")
	public String orderToMember() {
		return memberService.getUser();
	}

}
  1. 创建启动类
package wxw.order.controller;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;

@EnableDubbo
@SpringBootApplication
public class AppOrder {
	public static void main(String[] args) {
		SpringApplication.run(AppOrder.class, args);
	}
}
  1. 创建核心配置文件
#服务器接口
server.port=8082
#dubbo名字
dubbo.application.name=order
#dubbo注册中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181
#调用服务时间
dubbo.consumer.timeout=5000
  1. 运行启动类并访问

效果图
在这里插入图片描述
注意:必须先运行生产者会员服务,才可以调用生产者会员服务。

大家可以多启动几个 发布服务端口 然后 玩玩 就集群效果 我就不做展示了

发布了24 篇原创文章 · 获赞 10 · 访问量 738

猜你喜欢

转载自blog.csdn.net/qq_43581078/article/details/103936789