文档章节

分布式服务-DUBBOX(八):单一服务下事务配置

w
 warlockssss
发布于 2016/12/08 15:34
字数 452
阅读 52
收藏 2

1、概述

    工程调用流程:服务生产者=>Service层=>Dao层。

    在“消费层”只进行“单一”服务调用时,可暂时不用考虑“分布式”事务问题。此情形下事务还是使用Spring注解事务,只要考虑事务是配置在“服务生产者”还是“Service层”。

 

2、事务配置Service层测试

0)controller层:UserController

    @RequestMapping("addUser")
    @ResponseBody
    public Boolean addUser(String name,@DateTimeFormat(pattern = "yyyy-MM-dd") Date birthday) throws Exception{
        if(StringUtils.isEmpty(name))
            throw new DemoException("前置参数name为空");

        return userApi.add(name,birthday);
    }

1)dubbo接口:UserApi.java

    Boolean add(String name,Date birthday) throws Exception;

2)dubbo接口实现-服务生产者:UserApiImpl.java

  //@Transactional(rollbackFor = Exception.class)
    @Override
    public Boolean add(String name, Date birthday) throws Exception {
        try {
            User user = new User();
            user.setName(name);
            user.setBirthday(birthday);
            return userService.add(user);
        }catch (DemoException e){
            LOGGER.error("添加用户异常",e);
            throw new Exception("添加用户异常",e);
        }

    }

3)Service层:UserService.java

@Transactional(rollbackFor = DemoException.class)
    public Boolean add(User user) throws DemoException{
        int count = userDao.add(user);

        if(count != 1){
            throw new DemoException("数据库更新不为1");
        }

        LOGGER.info("新增user主键id=>{}",user.getId());

        if(1 == 1) {
            throw new DemoException("测试事务事务是否回滚");
        }
        return true;
    }

说明:注解事务中回滚默认是RuntimeException,DemoException并非RuntimeException,所以需要在rollbackFor 。

4)测试结果

http://localhost:8086/demo-consumer/user/addUser.do?name=wsy&birthday=2011-11-11

页面显示如下:

数据库表无对应记录

即事务配置生效,数据回滚。

 

3、事务配置在服务生产者

把UserApiImpl.java中注解事务放开,注释UserService中事务配置。

测试结果:即事务配置生效,数据回滚。

 

补充说明:在有些dubbo版本中,如果事务配置在服务生产者,会有各种问题出现。

工程中dubbo版本是从https://github.com/dangdangdotcom/dubbox下载源码重新编译,已没此问题。

© 著作权归作者所有

共有 人打赏支持
w
粉丝 14
博文 73
码字总数 23115
作品 0
宝山
私信 提问
binux/xbin-store

xbin-store 模仿国内知名B2C网站,实现的一个分布式B2C商城 进群讨论 群 626068936 Dubbox 版本: GitHub 地址 : https://github.com/xubinux/xbin-store OSChina 地址 : http://git.oschina.n......

binux
2017/04/06
0
0
应用服务架构演变史&&SOA架构&&Dubbox分布式服务架构原理与部署

SOA架构 SOA是Service-Oriented Architecture 是一种面向服务的分布式架构的治理系统确保架构有条不絮的演进. 1.应用服务架构的演变史 ORM单一应用架构:最开始数据量很小,系统中的所用的模块...

优云
2018/11/26
0
0
dubbox粗记

一直在用dubbo2.5。今天花了一天时间研究了当当网的dubbox项目并在本地运行,粗略记录一下认识。 dubbox的主要升级点: 1、dubbox弥补了dubbo中没有REST框架的不足,但REST性能指标比RPC要差...

Jim_Ai
2016/07/18
1K
3
分布式RPC服务框架--rpcx

rpcx是一个类似阿里巴巴 Dubbo 和微博 Motan 的分布式的RPC服务框架,基于Golang net/rpc实现。 与gRPC比较,完胜gRPC, 更不用说其它的"老"的RPC框架了。 谈起分布式的RPC框架,比较出名的是...

匿名
2017/01/31
6.1K
7
分布式服务-DUBBOX(九):多服务串行调用,解决分布式事务问题

1、概述 情景描述: dubbo服务A:支付接口服务 dubbo服务B:订单状态更新 正常流程,首先调用支付接口,支付成功后,再调用dubbo服务B更新订单状态;但是如果在调用dubbo服务B时失败,此时d...

warlockssss
2016/12/15
141
2

没有更多内容

加载失败,请刷新页面

加载更多

Linux Wireshark普通用户启动使用方案

当系统安装好Wireshark后请正常启动是否可以进行正常使用,如果不行请参考下列指导 向系统添加一个用户组 sudo groupadd wireshark //如提示此组存在可跳过 将指定用户添加到这个组中 sudo...

CHONGCHEN
今天
1
0
CSS 选择器参考手册

CSS 选择器参考手册 选择器 描述 [attribute] 用于选取带有指定属性的元素。 [attribute=value] 用于选取带有指定属性和值的元素。 [attribute~=value] 用于选取属性值中包含指定词汇的元素。...

Jack088
今天
2
0
数据库篇一

数据库篇 第1章 数据库介绍 1.1 数据库概述  什么是数据库(DB:DataBase) 数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以对数据库中的数据...

stars永恒
今天
4
0
Intellij IDEA中设置了jsp页面,但是在访问页面时却提示404

在Intellij IDEA中设置了spring boot的jsp页面,但是在访问时,却出现404,Not Found,经过查找资料后解决,步骤如下: 在Run/Debug Configurations面板中设置该程序的Working Directory选项...

uknow8692
昨天
4
0
day24:文档第五行增内容|每月1号压缩/etc/目录|过滤文本重复次数多的10个单词|人员分组|

1、在文本文档1.txt里第五行下面增加如下内容;两个方法; # This is a test file.# Test insert line into this file. 分析:给文档后增加内容,可以用sed 来搞定;也可以用while do done...

芬野de博客
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部