国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

springboot集成分布式事務Seata

focusj / 3051人閱讀

摘要:簡介地址版本和版本為,一直在快速迭代在之前都有可能出現協議不兼容盡量使用版本號一致說明目前提供的示例是針對使用的服務,那的項目如何集成呢快速開始使用案例購買商品的業務邏輯。

簡介 github地址

spring-boot-starter-seata:https://github.com/itrickzhan...

seata版本

server和client版本為0.4.1,Seata 一直在快速迭代在1.0 之前都有可能出現協議不兼容 盡量使用版本號一致

說明

目前提供的示例是針對使用dubbo的服務,那Spring Boot的項目如何集成fescar呢?

快速開始 使用案例

Business Service購買商品的業務邏輯。整個業務邏輯由3個微服務驅動:

Storage service: 扣除給定商品的庫存量.

Order service: 根據采購需求創建訂單.

Account service: 借記用戶帳戶上的余額.

請求邏輯

fescar下載

下載地址:https://github.com/alibaba/fe...

腳本 業務腳本
DROP TABLE IF EXISTS `storage_tbl`;
CREATE TABLE `storage_tbl` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `commodity_code` varchar(255) DEFAULT NULL,
  `count` int(11) DEFAULT 0,
  PRIMARY KEY (`id`),
  UNIQUE KEY (`commodity_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


DROP TABLE IF EXISTS `order_tbl`;
CREATE TABLE `order_tbl` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` varchar(255) DEFAULT NULL,
  `commodity_code` varchar(255) DEFAULT NULL,
  `count` int(11) DEFAULT 0,
  `money` int(11) DEFAULT 0,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


DROP TABLE IF EXISTS `account_tbl`;
CREATE TABLE `account_tbl` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` varchar(255) DEFAULT NULL,
  `money` int(11) DEFAULT 0,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
事務腳本
-- 注意此處0.3.0+ 增加唯一索引 ux_undo_log
CREATE TABLE `undo_log` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `branch_id` bigint(20) NOT NULL,
  `xid` varchar(100) NOT NULL,
  `rollback_info` longblob NOT NULL,
  `log_status` int(11) NOT NULL,
  `log_created` datetime NOT NULL,
  `log_modified` datetime NOT NULL,
  `ext` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `ux_undo_log` (`xid`,`branch_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
集成

    org.springframework.boot
    spring-boot-starter-seata
    ${project.version}
使用

使用注解@GlobalTransactional

    @GlobalTransactional(timeoutMills = 300000, name = "spring-cloud-demo-tx")
    @RequestMapping(value = "/fescar/feign", method = RequestMethod.GET, produces = "application/json")
    public String feign() {
        LOGGER.info("business Service Begin ... xid: " + RootContext.getXID());
        String result = storageService.storage(COMMODITY_CODE, ORDER_COUNT);
        if (!SUCCESS.equals(result)) {
            throw new RuntimeException();
        }
        result = orderService.order(USER_ID, COMMODITY_CODE, ORDER_COUNT);
        if (!SUCCESS.equals(result)) {
            throw new RuntimeException();
        }
        return SUCCESS;
    }
demo運行

spring-boot-starter-seata-sample

Start AccountService

Start StorageService

Start OrderService

Run BusinessService for demo test

運行結果

啟動demo

訪問demo

數據庫數據

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/75497.html

相關文章

  • 微服務架構中,二次淺封裝實踐

    摘要:三實踐案例案例簡介分布式系統中,微服務基礎組件等,系統中間件,等,對常用功能配置等,進行二次淺封裝并統一集成管理,以滿足日常開發中基礎環境搭建與臨時工具的快速實現。 一、背景簡介 分布式系統中存在很多拆分的服務,在不斷迭代升級的過程中,會出現如下常見的棘手情況: 某個技術組件版本升級,依賴包升級導致部分語法或者API過期,或者組件修復緊急的問題,從而會導致分布式系統下各個服...

    Hujiawei 評論0 收藏0
  • Java學習路線

    摘要:學習路線編程基礎語言語言基礎數據類型面向對象接口容器異常泛型反射注解流集合類加載機制字節碼執行機制 Java學習路線 Java編程基礎 Java語言 Java語言基...

    不知名網友 評論0 收藏0
  • 布式事務中間件Seata的設計原理

    摘要:如上圖所示,的實際上是已中間件的形式放在應用層,不用依賴數據庫對協議的支持,完全剝離了分布式事務方案對數據庫在協議支持上的要求。 微信公眾號「后端進階」,專注后端技術分享:Java、Golang、WEB框架、分布式中間件、服務治理等等。 在微服務架構體系下,我們可以按照業務模塊分層設計,單獨部署,減輕了服務部署壓力,也解耦了業務的耦合,避免了應用逐漸變成一個龐然怪物,從而可以輕松擴展,...

    Kylin_Mountain 評論0 收藏0
  • Spring Cloud Alibaba 新版本發布:眾多期待內容整合打包加入!

    摘要:在之后,也終于發布了最新的版本。該版本距離上一次發布,過去了整整個月下面就隨我一起看看,這個大家期待已久的版本都有哪些內容值得我們關注。如果是用戶,同時也是阿里云這些產品的用戶,那么直接使用還是非常方便的。 在Nacos 1.0.0 Release之后,Spring Cloud Alibaba也終于發布了最新的版本。該版本距離上一次發布,過去了整整4個月!下面就隨我一起看看,這個大家期...

    不知名網友 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<