adjust due to docs
This commit is contained in:
parent
e261d6e948
commit
bc08429a95
@ -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")
|
||||||
|
|||||||
@ -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)
|
||||||
|
|||||||
@ -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)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user