seata學習-簡單demo入門

概述

學習一個框架,我喜歡從demo中瞭解該框架所能達到的效果再進行深入地學習。本篇文章將會介紹 seata 的一個入門使用 demo ,作爲使用 seata 的入門學習文章。

使用案例

首先到github 中下載一個 RM 的運行服務,本例中使用的是 :

https://github.com/seata/seata/releases/download/v1.2.0/seata-server-1.2.0.zip

解壓後在 /bin 路徑下啓動 bat 文件

接着自然就是demo 資源的下載了 :

https://github.com/seata/seata-samples

我們這裏是使用的 MyBatis 和 Spring boot 和 seata 的整個案例,所涉及的 SQL 語句在 demo 路徑下的 sql 文件夾下 :

1297993-20200515143746918-279617761.png

可以看到 springboot-mybatis 共有5個子項目,我們本地執行完sql ,記得修改每個子項目中的 application.yml 文件中關於數據庫的配置 ,例如 :

server:
  port: 8082
spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/db_order?useSSL=false&serverTimezone=UTC
    username: root
    password: 12345678
seata:
    ....
    ....

修改完啓動,其中sbm-business-service 有個Controller 提供接口供我們測試 :

@RequestMapping("/api/business")
@RestController
public class BusinessController {

    @Autowired
    private BusinessService businessService;

    /**
     * 購買下單,模擬全局事務提交
     *
     * @return
     */
    @RequestMapping("/purchase/commit")
    public Boolean purchaseCommit(HttpServletRequest request) {
        businessService.purchase("1001", "2001", 1);
        return true;
    }

    /**
     * 購買下單,模擬全局事務回滾
     *
     * @return
     */
    @RequestMapping("/purchase/rollback")
    public Boolean purchaseRollback() {
        try {
            businessService.purchase("1002", "2001", 1);
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }

        return true;
    }
}

可以看到這是一個模擬購物,訂單和用戶餘額還有貨物的例子,我們可以看一下數據庫中的金額, 邏輯: 用戶扣錢-> 庫存-1 -> 訂單庫插入一條數據
這幾個操作是不同事務,執行成功的話應該會同時一起執行,失敗的話會一起回滾。
postman 調用 : localhost:8084/api/business/purchase/commit ,我們看一下執行成功後的結果 :
db_account.account_tbl 表的數據

id	user_id	money
1	1001	9995
2	1002	10000

db_storage.storage_tbl 中的數據

id	commodity_code	count
1	2001	999

db_order.order_tbl 表中的數據

id	user_id	commodity_code	count	money
1	1001	2001	1	5

ok,事務執行是成功的。

總結

該篇只是簡單地介紹 seata 框架demo 等簡單使用,方便大家入門,後續將繼續深入 seata 的學習

參考資料

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章