(十)Spring Boot 整合dubbo
来源:互联网 发布:手机淘宝网银怎么开通 编辑:程序博客网 时间:2024/06/06 05:01
Spring Boot 做的一个简单的增删改查,前台页面整合Thymeleaf模板,数据源druid,声明式事务,整合redis,并开启redis事务,整合ActiveMQ,整合dubbo 项目下载地址:点此下载
如果有不需要使用的功能,只需要删除com.test.springboot.config下对应的配置再启动就行了
下载文件介绍:
spring-boot-consumer 为服务消费者,只有Controller层,没有操作redis ,mysql数据库和amq队列。
spring-boot-example 为服务提供者,不包含Controller层,操作数据库,缓存等都包含在内。
spring-boot-service 打包方式为jar ,上面两个项目,都要依赖该项目,里面只有两个类,一个StudentService和所需的pojo(Student)POJO记得实现序列化接口
如果有不需要使用的功能,只需要删除com.test.springboot.config下对应的配置再启动就行了
下载文件介绍:
spring-boot-consumer 为服务消费者,只有Controller层,没有操作redis ,mysql数据库和amq队列。
spring-boot-example 为服务提供者,不包含Controller层,操作数据库,缓存等都包含在内。
spring-boot-service 打包方式为jar ,上面两个项目,都要依赖该项目,里面只有两个类,一个StudentService和所需的pojo(Student)POJO记得实现序列化接口
整合过程
1.在src/main/resources下创建spring文件夹,用来存放dubbo的xml的配置文件
2.在程序的入口启动类上@ImportResource("classpath:spring/*.xml")
3.服务提供者和服务消费者的pom.xml添加如下依赖<!-- 整合dubbox --><dependency><groupId>com.alibaba</groupId><artifactId>dubbo</artifactId><version>2.8.4</version><exclusions><exclusion><groupId>org.springframework</groupId><artifactId>spring</artifactId></exclusion></exclusions></dependency><!-- zookeeper注册中心 --><dependency><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId><version>3.4.6</version><exclusions><exclusion><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId></exclusion><exclusion><groupId>log4j</groupId><artifactId>log4j</artifactId></exclusion></exclusions></dependency><dependency><groupId>com.101tec</groupId><artifactId>zkclient</artifactId><version>0.10</version></dependency>4.服务提供者的application.properties中添加以下内容
#配置dubbo#应用名称dubbo.application.name=spring-boot-example-provider#注册中心地址#dubbo.address=zookeeper://172.16.10.14:2181?backup=172.16.10.15:2181,172.16.20.29:2181dubbo.registry.address=zookeeper://172.20.1.154:2181#暴露服务端口dubbo.protocol.port=208805.服务提供者的dubbo-provider.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> <!-- 搭建服务提供方--> <!-- 提供方应用名,用于计算依赖关系,不是匹配条件,不要与消费方一样 --> <dubbo:application name="${dubbo.application.name}"/> <!-- 使用zookeeper注册中心暴露服务地址,使用多个注册中心 --> <dubbo:registry protocol="zookeeper" address="${dubbo.registry.address}" /> <!-- 用dubbo协议在20880端口暴露服务 --> <dubbo:protocol name="dubbo" port="${dubbo.protocol.port}" /> <!-- 用户服务接口 --> <dubbo:service interface="com.test.springboot.dubbo.student.StudentService" ref="studentService" /> <bean id="studentService" class="com.test.springboot.service.impl.StudentServiceImpl"/> </beans>6.服务消费者的application.properties中添加以下内容
#配置dubbo#应用名称 dubbo.application.name=spring-boot-example-consumer#注册中心地址#dubbo.address=zookeeper://172.16.10.14:2181?backup=172.16.10.15:2181,172.16.20.29:2181dubbo.registry.address=zookeeper://172.20.1.154:2181#消费服务设置全局超时时间,如果超过了设置的时间程序没有做出响应,则报错dubbo.timeout=6000007.服务消费者的dubbo-consumer.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> <!-- 搭建服务消费方--> <!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 --> <dubbo:application name="${dubbo.application.name}"/> <!-- 使用zookeeper注册中心暴露服务地址,使用多个注册中心 --> <dubbo:registry protocol="zookeeper" address="${dubbo.registry.address}" /> <!-- 全局设置超时时间 --> <dubbo:consumer timeout="${dubbo.timeout}"/> <!-- 用户服务接口 --> <dubbo:reference interface="com.test.springboot.dubbo.student.StudentService" id="studentService" check="false" /></beans>
8.启动两个工程测试服务调用,添加一个用户试试,可以看到服务调用没问题
注意:如果是系统内部互相调用,一定要走zookeeper的注册与发现,如果是对外发布RESTful 接口,只需要再添加一个Controller就可以了,比使用dubbox发布RESTful,还要简单,毕竟Spring的配置是你所熟悉的。
9.如何保证dubbo服务既不往外抛异常,也可以保证事务
有的时候,我们在使用dubbo服务的时候,不想让服务直接抛出异常,而是类似于接口定义一样返回 code data message这种格式的json,但是又要保证事务性。所以可以使用下面这种方式,出现异常手动回滚事务。
@Transactionalpublic ModelsReturn selectStudentList() {try {//业务逻辑都写到 try catch 中ModelsReturn modelsReturn = new ModelsReturn();modelsReturn.setCode("0000");modelsReturn.setMessage("成功");modelsReturn.setData("");return modelsReturn;} catch (Exception e) {//打印异常堆栈信息e.printStackTrace();//手动回滚事务TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();//返回错误码ModelsReturn modelsReturn = new ModelsReturn();modelsReturn.setCode("1111");modelsReturn.setMessage("服务异常");modelsReturn.setData("");return modelsReturn;}}
阅读全文
1 0
- (十)Spring Boot 整合dubbo
- Spring boot 整合Dubbo
- Spring Boot整合Dubbo
- Spring Boot整合Dubbo运行
- spring boot + dubbo整合注意事项
- Spring Boot整合Dubbo运行
- Spring Boot整合Dubbo框架demo
- Spring Boot Dubbo 整合和入门理解
- Spring Boot整合Dubbo框架demo
- 解密Spring Boot整合Dubbo RPC框架
- Spring Boot对dubbo的整合
- spring boot 与dubbo 2.8.4整合的一些问题
- Spring boot和dubbo整合——基于传统方式
- Spring-boot:5分钟整合Dubbo构建分布式服务
- spring boot+dubbo+zookeeper(SOA详细整合)
- 使用spring boot搭建与dubbo整合项目
- dubbo + spring boot
- spring boot集成dubbo
- 集训8.24
- Can you answer these queries?
- 英语总结(一)
- c++转换static_cast 和 reinterpret_cast
- [Scala函数特性系列]——按名称传递参数
- (十)Spring Boot 整合dubbo
- 统计字符
- HTTP协议—— 简单认识TCP/IP协议
- 12c glogin 提示符设置
- PDO错误处理的三种模式
- Java IO 和 NIO的区别
- 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5
- FFT学习笔记<理论篇>
- 分享一个Http代理Get请求(C#)