adjust due to docs

This commit is contained in:
yedf2 2021-07-26 21:21:54 +08:00
parent e261d6e948
commit bc08429a95
3 changed files with 14 additions and 21 deletions

View File

@ -43,7 +43,7 @@ func xaRollback(t *testing.T) {
xc := examples.XaClient xc := examples.XaClient
gid := "xaRollback" gid := "xaRollback"
err := xc.XaGlobalTransaction(gid, func(xa *dtmcli.Xa) error { err := xc.XaGlobalTransaction(gid, func(xa *dtmcli.Xa) error {
req := examples.GenTransReq(30, false, true) req := &examples.TransReq{Amount: 30, TransInResult: "FAILURE"}
resp, err := xa.CallBranch(req, examples.Busi+"/TransOutXa") resp, err := xa.CallBranch(req, examples.Busi+"/TransOutXa")
common.CheckRestySuccess(resp, err) common.CheckRestySuccess(resp, err)
resp, err = xa.CallBranch(req, examples.Busi+"/TransInXa") resp, err = xa.CallBranch(req, examples.Busi+"/TransInXa")

View File

@ -13,11 +13,7 @@ func MsgSetup(app *gin.Engine) {
// MsgFireRequest 1 // MsgFireRequest 1
func MsgFireRequest() string { func MsgFireRequest() string {
logrus.Printf("a busi transaction begin") logrus.Printf("a busi transaction begin")
req := &TransReq{ req := &TransReq{Amount: 30}
Amount: 30,
TransInResult: "SUCCESS",
TransOutResult: "SUCCESS",
}
msg := dtmcli.NewMsg(DtmServer, dtmcli.MustGenGid(DtmServer)). msg := dtmcli.NewMsg(DtmServer, dtmcli.MustGenGid(DtmServer)).
Add(Busi+"/TransOut", req). Add(Busi+"/TransOut", req).
Add(Busi+"/TransIn", req) Add(Busi+"/TransIn", req)

View File

@ -5,7 +5,6 @@ import (
"strings" "strings"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"github.com/sirupsen/logrus"
"github.com/yedf/dtm/common" "github.com/yedf/dtm/common"
"github.com/yedf/dtm/dtmcli" "github.com/yedf/dtm/dtmcli"
) )
@ -37,12 +36,22 @@ func dbGet() *common.DB {
return common.DbGet(config.Mysql) return common.DbGet(config.Mysql)
} }
// XaFireRequest 1 // XaSetup 挂载http的api创建XaClient
func XaSetup(app *gin.Engine) {
app.POST(BusiAPI+"/TransInXa", common.WrapHandler(xaTransIn))
app.POST(BusiAPI+"/TransOutXa", common.WrapHandler(xaTransOut))
config.Mysql["database"] = "dtm_busi"
var err error
XaClient, err = dtmcli.NewXaClient(DtmServer, config.Mysql, app, Busi+"/xa")
e2p(err)
}
// XaFireRequest 注册全局XA事务调用XA的分支
func XaFireRequest() string { func XaFireRequest() string {
gid := dtmcli.MustGenGid(DtmServer) gid := dtmcli.MustGenGid(DtmServer)
err := XaClient.XaGlobalTransaction(gid, func(xa *dtmcli.Xa) (rerr error) { err := XaClient.XaGlobalTransaction(gid, func(xa *dtmcli.Xa) (rerr error) {
defer common.P2E(&rerr) defer common.P2E(&rerr)
req := GenTransReq(30, false, false) req := &TransReq{Amount: 30}
resp, err := xa.CallBranch(req, Busi+"/TransOutXa") resp, err := xa.CallBranch(req, Busi+"/TransOutXa")
common.CheckRestySuccess(resp, err) common.CheckRestySuccess(resp, err)
resp, err = xa.CallBranch(req, Busi+"/TransInXa") resp, err = xa.CallBranch(req, Busi+"/TransInXa")
@ -53,16 +62,6 @@ func XaFireRequest() string {
return gid return gid
} }
// XaSetup 1
func XaSetup(app *gin.Engine) {
app.POST(BusiAPI+"/TransInXa", common.WrapHandler(xaTransIn))
app.POST(BusiAPI+"/TransOutXa", common.WrapHandler(xaTransOut))
config.Mysql["database"] = "dtm_busi"
var err error
XaClient, err = dtmcli.NewXaClient(DtmServer, config.Mysql, app, Busi+"/xa")
e2p(err)
}
func xaTransIn(c *gin.Context) (interface{}, error) { func xaTransIn(c *gin.Context) (interface{}, error) {
err := XaClient.XaLocalTransaction(c, func(db *common.DB, xa *dtmcli.Xa) (rerr error) { err := XaClient.XaLocalTransaction(c, func(db *common.DB, xa *dtmcli.Xa) (rerr error) {
req := reqFrom(c) req := reqFrom(c)
@ -85,9 +84,7 @@ func xaTransOut(c *gin.Context) (interface{}, error) {
if req.TransOutResult != "SUCCESS" { if req.TransOutResult != "SUCCESS" {
return fmt.Errorf("tranOut failed") return fmt.Errorf("tranOut failed")
} }
logrus.Printf("before updating balance")
dbr := db.Exec("update user_account set balance=balance-? where user_id=?", req.Amount, 1) dbr := db.Exec("update user_account set balance=balance-? where user_id=?", req.Amount, 1)
logrus.Printf("after updating balance")
return dbr.Error return dbr.Error
}) })
e2p(err) e2p(err)