diff --git a/test/busi/quick_start.go b/test/busi/quick_start.go index e2ae867..5fd1314 100644 --- a/test/busi/quick_start.go +++ b/test/busi/quick_start.go @@ -1,80 +1,73 @@ -/* - * Copyright (c) 2021 yedf. All rights reserved. - * Use of this source code is governed by a BSD-style - * license that can be found in the LICENSE file. - */ - package busi import ( "fmt" + "log" "time" "github.com/dtm-labs/dtm/dtmcli" - "github.com/dtm-labs/dtm/dtmcli/logger" "github.com/gin-gonic/gin" ) -// 启动命令:go run app/main.go qs - // 事务参与者的服务地址 const qsBusiAPI = "/api/busi_start" const qsBusiPort = 8082 -const dtmServer = "http://localhost:36789/api/dtmsvr" var qsBusi = fmt.Sprintf("http://localhost:%d%s", qsBusiPort, qsBusiAPI) -// QsMain main for qs func QsMain() { QsStartSvr() - gid := QsFireRequest() - logger.Infof("transaction: %s succeed", gid) + QsFireRequest() + select {} } // QsStartSvr quick start: start server func QsStartSvr() { app := gin.New() qsAddRoute(app) - logger.Infof("quick start examples listening at %d", qsBusiPort) + log.Printf("quick start examples listening at %d", qsBusiPort) go func() { _ = app.Run(fmt.Sprintf(":%d", qsBusiPort)) }() time.Sleep(100 * time.Millisecond) } -// QsFireRequest quick start: fire request -func QsFireRequest() string { - req := &gin.H{"amount": 30} // 微服务的载荷 - // DtmServer为DTM服务的地址 - saga := dtmcli.NewSaga(dtmServer, dtmcli.MustGenGid(dtmServer)). - // 添加一个TransOut的子事务,正向操作为url: qsBusi+"/TransOut", 逆向操作为url: qsBusi+"/TransOutCom" - Add(qsBusi+"/TransOut", qsBusi+"/TransOutCom", req). - // 添加一个TransIn的子事务,正向操作为url: qsBusi+"/TransOut", 逆向操作为url: qsBusi+"/TransInCom" - Add(qsBusi+"/TransIn", qsBusi+"/TransInCom", req) - // 等待事务全部完成后再返回,可选 - saga.WaitResult = true - // 提交saga事务,dtm会完成所有的子事务/回滚所有的子事务 - err := saga.Submit() - logger.FatalIfError(err) - return saga.Gid -} - func qsAddRoute(app *gin.Engine) { app.POST(qsBusiAPI+"/TransIn", func(c *gin.Context) { - logger.Infof("TransIn") - c.JSON(200, "") - // c.JSON(409, "") // Status 409 for Failure. Won't be retried + log.Printf("TransIn") + // c.JSON(200, "") + c.JSON(409, "") // Status 409 for Failure. Won't be retried }) - app.POST(qsBusiAPI+"/TransInCom", func(c *gin.Context) { - logger.Infof("TransInCom") + app.POST(qsBusiAPI+"/TransInCompensate", func(c *gin.Context) { + log.Printf("TransInCompensate") c.JSON(200, "") }) app.POST(qsBusiAPI+"/TransOut", func(c *gin.Context) { - logger.Infof("TransOut") + log.Printf("TransOut") c.JSON(200, "") }) - app.POST(qsBusiAPI+"/TransOutCom", func(c *gin.Context) { - logger.Infof("TransOutCom") + app.POST(qsBusiAPI+"/TransOutCompensate", func(c *gin.Context) { + log.Printf("TransOutCompensate") c.JSON(200, "") }) } + +const dtmServer = "http://localhost:36789/api/dtmsvr" + +// QsFireRequest quick start: fire request +func QsFireRequest() string { + req := &gin.H{"amount": 30} // 微服务的载荷 + // DtmServer为DTM服务的地址 + saga := dtmcli.NewSaga(dtmServer, dtmcli.MustGenGid(dtmServer)). + // 添加一个TransOut的子事务,正向操作为url: qsBusi+"/TransOut", 逆向操作为url: qsBusi+"/TransOutCompensate" + Add(qsBusi+"/TransOut", qsBusi+"/TransOutCompensate", req). + // 添加一个TransIn的子事务,正向操作为url: qsBusi+"/TransOut", 逆向操作为url: qsBusi+"/TransInCompensate" + Add(qsBusi+"/TransIn", qsBusi+"/TransInCompensate", req) + // 提交saga事务,dtm会完成所有的子事务/回滚所有的子事务 + err := saga.Submit() + + if err != nil { + panic(err) + } + return saga.Gid +}