spring-boot整合Dubbo分布式架构案例
1.运行环境
开发工具:intellij idea
JDK版本:1.8
项目管理工具:Maven 3.2.5
2.项目文件目录
3.Maven Plugin管理
总项目 pom.xml配置代码:
<?xml version="1.0" encoding="UTF-8"?>
<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>spring-boot-dubbo</groupId>
<artifactId>spring-boot-dubbo</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
<module>spring-boot-dubbo-api</module>
<module>spring-boot-dubbo-provider</module>
<module>spring-boot-dubbo-consumer</module>
</modules> <parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.6.RELEASE</version>
</parent> <properties>
<java.version>1.7</java.version>
<springboot.version>1.5.6.RELEASE</springboot.version>
</properties> <dependencies>
<!-- Spring Boot web依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Spring Boot test依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- Spring Boot dubbo依赖 -->
<dependency>
<groupId>io.dubbo.springboot</groupId>
<artifactId>spring-boot-starter-dubbo</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies> </project>
provider pom.xml配置代码:
<?xml version="1.0" encoding="UTF-8"?>
<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">
<parent>
<artifactId>spring-boot-dubbo</artifactId>
<groupId>spring-boot-dubbo</groupId>
<version>1.0-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion> <artifactId>spring-boot-dubbo-provider</artifactId> <dependencies>
<dependency>
<groupId>spring-boot-dubbo</groupId>
<artifactId>spring-boot-dubbo-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${springboot.version}</version>
</plugin>
</plugins>
</build> </project>
consumer pom.xml配置代码:
<?xml version="1.0" encoding="UTF-8"?>
<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">
<parent>
<artifactId>spring-boot-dubbo</artifactId>
<groupId>spring-boot-dubbo</groupId>
<version>1.0-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion> <artifactId>spring-boot-dubbo-consumer</artifactId> <dependencies>
<dependency>
<groupId>spring-boot-dubbo</groupId>
<artifactId>spring-boot-dubbo-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${springboot.version}</version>
</plugin>
</plugins>
</build> </project>
4.api相关配置编写
ExampleService接口类编写
package com.goku.demo.api.service; /**
* Created by nbfujx on 2017-11-23.
*/
public interface ExampleService {
String echo(String str);
}
5.provider相关配置编写
application.properties编写
## 避免和 consumer 工程端口冲突
server.port=8081 spring.dubbo.application.name=provider
spring.dubbo.registry.address=zookeeper://localhost:2181
spring.dubbo.protocol.name=dubbo
spring.dubbo.protocol.port=20880
## 本机的IP地址
spring.dubbo.protocol.host=127.0.0.1
spring.dubbo.scan=com.goku.demo
## 设置Module
spring.dubbo.module.default=false
ExampleServiceImpl接口实现类编写
package com.goku.demo.service.impl; import com.goku.demo.api.service.ExampleService;
import com.alibaba.dubbo.config.annotation.Service; /**
* Created by nbfujx on 2017-11-23.
*/
@Service(version = "1.0.0")
public class ExampleServiceImpl implements ExampleService { @Override
public String echo(String str) {
return "hello"+ str;
}
}
6.consumer相关配置编写
application.properties编写
spring.dubbo.application.name=consumer
spring.dubbo.registry.address=zookeeper://localhost:2181
spring.dubbo.scan=com.goku.demo
spring.dubbo.module.default=false
ExampleController控制器编写
package com.goku.demo.controller; import com.alibaba.dubbo.config.annotation.Reference;
import com.goku.demo.api.service.ExampleService;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; /**
* Created by nbfujx on 2017-11-20.
*/
@RestController
public class ExampleController { @Reference(version = "1.0.0")
public ExampleService exampleService; @RequestMapping("/")
public String helloWorld()
{
return "helloWorld";
} @RequestMapping("/{str}")
public String echo(@PathVariable String str)
{
return exampleService.echo(str);
}
}
7.在页面上运行
8.降级服务
mock的配置可以在出现非业务异常(比如超时,网络异常等)时执行。mock的配置支持两种,一种为boolean值,默认的为false。如果配置为true,则缺省使用mock类名,即类名+Mock后缀;另外一种则是配置"return null",可以很简单的忽略掉异常。
ExampleServiceMock缺省类编写
package com.goku.demo.api.service; import org.springframework.stereotype.Service; /**
* Created by nbfujx on 2017-11-27.
*/
@Service
public class ExampleServiceMock implements ExampleService {
@Override
public String echo(String str) {
return "hello"+ str+"this is error!";
}
}
ExampleController控制器修改
package com.goku.demo.controller; import com.alibaba.dubbo.config.annotation.Reference;
import com.goku.demo.api.service.ExampleService;
import com.goku.demo.api.service.ExampleServiceMock;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; /**
* Created by nbfujx on 2017-11-20.
*/
@RestController
public class ExampleController { @Reference(version = "1.0.0",check=false,mock="com.goku.demo.api.service.ExampleServiceMock")
@Autowired
public ExampleService exampleService; @RequestMapping("/")
public String helloWorld()
{
return "helloWorld";
} @RequestMapping("/{str}")
public String echo(@PathVariable String str)
{
return exampleService.echo(str);
}
}
测试服务未启动返回值
9.GITHUB地址
https://github.com/nbfujx/springBoot-learn-demo/tree/master/spring-boot-dubbo
待续
spring-boot整合Dubbo分布式架构案例的更多相关文章
- Spring Boot 整合 Dubbo和Zookeeper
Spring Boot 整合 Dubbo和Zookeeper Spring Boot 整合 Dubbo和Zookeeper 环境介绍 Zookeeper 安装 启动 Dubbo admin 搭建 创建 ...
- Spring Boot整合Dubbo使用及开发笔记
一.概述: Spring Dubbo是我开发的一个基于spring-boot和dubbo,目的是使用Spring boot的风格来使用dubbo.(即可以了解Spring boot的启动过程又可以学习 ...
- spring boot 整合dubbo
dubbo与springboot的集成和使用dubbo-spring-boot-starter SpringBoot整合Dubbo2.5.10(官方的spring-boot-starter0.1.0) ...
- Spring Boot 整合 Thymeleaf 完整 Web 案例
Thymeleaf 是一种模板语言.那模板语言或模板引擎是什么?常见的模板语言都包含以下几个概念:数据(Data).模板(Template).模板引擎(Template Engine)和结果文档(Re ...
- Spring Boot整合Dubbo框架demo
Dubbo框架原理见之前的博文:http://www.cnblogs.com/umgsai/p/5836925.html 首先启动zookeeper Server端 Pom配置如下 <?xml ...
- spring boot 2.x 系列 —— spring boot 整合 dubbo
文章目录 一. 项目结构说明 二.关键依赖 三.公共模块(boot-dubbo-common) 四. 服务提供者(boot-dubbo-provider) 4.1 提供方配置 4.2 使用注解@Ser ...
- Spring Boot整合dubbo(注解的方式)
一.创建项目 1.创建一个空的项目 2.在空的项目中添加两个Spring Boot模块,如下图所示 二.在provider模块中的pom文件中添加依赖 <dependency> <g ...
- dubbo学习(十)spring boot整合dubbo
工程搭建与配置 生产者 1.创建一个生产者的spring boot工程,配置好依赖,并把接口实现类文件夹复制到新的工程里 2.pom.xml配置dubbo的相关依赖 <!-- Dubbo Spr ...
- Spring Boot 整合 Elasticsearch,实现 function score query 权重分查询
摘要: 原创出处 www.bysocket.com 「泥瓦匠BYSocket 」欢迎转载,保留摘要,谢谢! 『 预见未来最好的方式就是亲手创造未来 – <史蒂夫·乔布斯传> 』 运行环境: ...
随机推荐
- 使用debugger在程序中加入断点
使用debugger在程序中加入断点 版权声明:本文为博主原创文章,未经博主允许不得转载. 我们可以在程序中加入debugger语句,这样Firefox的调试工具会停留在这条语句上,代码也暂停执行,和 ...
- Android O编译前修改文件和目录权限
当需要修改某文件或路径权限时,我们可以在init.rc开机启动某节点添加chmod命令进行修改.但是对于system分区,由于是ro权限,在init.rc使用chmod修改权限无效.需要在文件编译时, ...
- iReport+JasperReport+JSP 输出HTML方式预览
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEnco ...
- Python算法每日一题--001--给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次.找出那个只出现了一次的元素. 说明: 你的算法应该具有线性时间复杂度. 你可以不使用额外空间来实现吗? 示例 1: 输入: [ ...
- Proxifier全局代理
0x00前言 成功搭建使用shadowshocks实现代理访问google,然而只能浏览器代理方式使用,不能其他程序使用代理,不利于白帽子匿名安全检测,下面将介绍利用Proxifier实现全局代理 ...
- 排序,其他的运用 os fork
while True: str_num = input("Enter number:") flag = True dotCount = 0 if str_num[0] == '-' ...
- servlet--禁用浏览器缓存
禁用浏览器缓存:Cache-Control.pragma.expires response.setHeader("Cache-Control", "no-cache&qu ...
- shell 删除项目日志
删除半年之前的日志 find 后面紧跟目录 .为当前目录 -type f 指定查找的是文件 -mtime +180 查找180天之前的 -name 文件名筛选 -exec -rm -rf 执行的 ...
- 1、引言(Introduction)
1.1 欢迎 在生活中用到的机器学习算法: (1)打开谷歌.必应搜索到你需要的内容,正是因为他们有良好的学习算法 (2)每次您阅读您的电子邮件垃圾邮件筛选器,可以帮你过滤大量的垃圾邮件 机器学习为什么 ...
- Word 中的橫式格式方程式和數學自動校正
以橫式格式輸入方程式 您可以使用數學自動校正程式碼,迅速輸入大多數的方程式.例如,若要對齊方程式陣列,您可以使用 @ 和 &,如下所示: \eqarray(x+1&=2@1+2+3+y ...