examples setup refactored
This commit is contained in:
parent
b8127df92a
commit
4218256c19
14
app/main.go
14
app/main.go
@ -40,38 +40,26 @@ func main() {
|
||||
}
|
||||
|
||||
// 下面是各类的例子
|
||||
app := examples.BaseAppStartup()
|
||||
examples.BaseAppStartup()
|
||||
examples.GrpcStartup()
|
||||
if os.Args[1] == "xa" { // 启动xa示例
|
||||
examples.XaSetup(app)
|
||||
examples.XaFireRequest()
|
||||
} else if os.Args[1] == "saga" { // 启动saga示例
|
||||
examples.SagaSetup(app)
|
||||
examples.SagaFireRequest()
|
||||
} else if os.Args[1] == "tcc" { // 启动tcc示例
|
||||
examples.TccSetup(app)
|
||||
examples.TccFireRequestNested()
|
||||
} else if os.Args[1] == "msg" { // 启动msg示例
|
||||
examples.MsgSetup(app)
|
||||
examples.MsgFireRequest()
|
||||
} else if os.Args[1] == "msg_grpc" { // 启动msg示例
|
||||
examples.MsgGrpcSetup(app)
|
||||
examples.MsgGrpcFireRequest()
|
||||
} else if os.Args[1] == "all" { // 运行所有示例
|
||||
examples.SagaSetup(app)
|
||||
examples.SagaWaitSetup(app)
|
||||
examples.TccSetup(app)
|
||||
examples.XaSetup(app)
|
||||
examples.MsgSetup(app)
|
||||
examples.SagaFireRequest()
|
||||
examples.TccFireRequestNested()
|
||||
examples.XaFireRequest()
|
||||
examples.MsgFireRequest()
|
||||
} else if os.Args[1] == "saga_barrier" {
|
||||
examples.SagaBarrierAddRoute(app)
|
||||
examples.SagaBarrierFireRequest()
|
||||
} else if os.Args[1] == "tcc_barrier" {
|
||||
examples.TccBarrierAddRoute(app)
|
||||
examples.TccBarrierFireRequest()
|
||||
} else {
|
||||
dtmcli.LogRedf("unknown arg: %s", os.Args[1])
|
||||
|
||||
@ -49,6 +49,7 @@ func (s *dtmServer) RegisterXaBranch(ctx context.Context, in *pb.DtmXaBranchRequ
|
||||
BranchID: in.Info.BranchID,
|
||||
Status: "prepared",
|
||||
Data: in.BusiData,
|
||||
URL: in.Notify,
|
||||
})
|
||||
return &emptypb.Empty{}, dtmgrpc.Result2Error(r, err)
|
||||
}
|
||||
|
||||
@ -46,13 +46,8 @@ func TestMain(m *testing.M) {
|
||||
examples.PopulateDB(false)
|
||||
// 启动组件
|
||||
go StartSvr()
|
||||
app = examples.BaseAppStartup()
|
||||
examples.GrpcStartup()
|
||||
examples.XaGrpcSetup()
|
||||
examples.TccSetup(app)
|
||||
examples.XaSetup(app)
|
||||
examples.TccBarrierAddRoute(app)
|
||||
examples.SagaBarrierAddRoute(app)
|
||||
app = examples.BaseAppStartup()
|
||||
|
||||
resetXaData()
|
||||
m.Run()
|
||||
|
||||
@ -3,6 +3,7 @@ package examples
|
||||
import (
|
||||
context "context"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/yedf/dtm/dtmcli"
|
||||
"github.com/yedf/dtm/dtmgrpc"
|
||||
emptypb "google.golang.org/protobuf/types/known/emptypb"
|
||||
@ -11,10 +12,11 @@ import (
|
||||
// XaGrpcClient XA client connection
|
||||
var XaGrpcClient *dtmgrpc.XaGrpcClient = nil
|
||||
|
||||
// XaGrpcSetup 挂载http的api,创建XaClient
|
||||
func XaGrpcSetup() {
|
||||
func init() {
|
||||
setupFuncs["XaGrpcSetup"] = func(app *gin.Engine) {
|
||||
XaGrpcClient = dtmgrpc.NewXaGrpcClient(DtmGrpcServer, config.DB, BusiGrpc+"/examples.Busi/XaNotify")
|
||||
}
|
||||
}
|
||||
|
||||
func (s *busiServer) XaNotify(ctx context.Context, in *dtmgrpc.BusiRequest) (*emptypb.Empty, error) {
|
||||
err := XaGrpcClient.HandleCallback(in.Info.Gid, in.Info.BranchID, in.Info.BranchType)
|
||||
|
||||
@ -21,14 +21,15 @@ func SagaBarrierFireRequest() string {
|
||||
return saga.Gid
|
||||
}
|
||||
|
||||
// SagaBarrierAddRoute 1
|
||||
func SagaBarrierAddRoute(app *gin.Engine) {
|
||||
func init() {
|
||||
setupFuncs["SagaBarrierSetup"] = func(app *gin.Engine) {
|
||||
app.POST(BusiAPI+"/SagaBTransIn", common.WrapHandler(sagaBarrierTransIn))
|
||||
app.POST(BusiAPI+"/SagaBTransInCompensate", common.WrapHandler(sagaBarrierTransInCompensate))
|
||||
app.POST(BusiAPI+"/SagaBTransOut", common.WrapHandler(sagaBarrierTransOut))
|
||||
app.POST(BusiAPI+"/SagaBTransOutCompensate", common.WrapHandler(sagaBarrierTransOutCompensate))
|
||||
dtmcli.Logf("examples listening at %d", BusiPort)
|
||||
}
|
||||
}
|
||||
|
||||
func sagaBarrierAdjustBalance(sdb *sql.Tx, uid int, amount int) (interface{}, error) {
|
||||
_, err := dtmcli.StxExec(sdb, "update dtm_busi.user_account set balance = balance + ? where user_id = ?", amount, uid)
|
||||
|
||||
@ -7,8 +7,8 @@ import (
|
||||
"github.com/yedf/dtm/dtmcli"
|
||||
)
|
||||
|
||||
// TccSetup 1
|
||||
func TccSetup(app *gin.Engine) {
|
||||
func init() {
|
||||
setupFuncs["TccSetupSetup"] = func(app *gin.Engine) {
|
||||
app.POST(BusiAPI+"/TransInTccParent", common.WrapHandler(func(c *gin.Context) (interface{}, error) {
|
||||
tcc, err := dtmcli.TccFromQuery(c.Request.URL.Query())
|
||||
e2p(err)
|
||||
@ -16,6 +16,7 @@ func TccSetup(app *gin.Engine) {
|
||||
return tcc.CallBranch(&TransReq{Amount: reqFrom(c).Amount}, Busi+"/TransIn", Busi+"/TransInConfirm", Busi+"/TransInRevert")
|
||||
}))
|
||||
}
|
||||
}
|
||||
|
||||
// TccFireRequestNested 1
|
||||
func TccFireRequestNested() string {
|
||||
|
||||
@ -25,8 +25,8 @@ func TccBarrierFireRequest() string {
|
||||
return gid
|
||||
}
|
||||
|
||||
// TccBarrierAddRoute 1
|
||||
func TccBarrierAddRoute(app *gin.Engine) {
|
||||
func init() {
|
||||
setupFuncs["TccBarrierSetup"] = func(app *gin.Engine) {
|
||||
app.POST(BusiAPI+"/TccBTransInTry", common.WrapHandler(tccBarrierTransInTry))
|
||||
app.POST(BusiAPI+"/TccBTransInConfirm", common.WrapHandler(tccBarrierTransInConfirm))
|
||||
app.POST(BusiAPI+"/TccBTransInCancel", common.WrapHandler(tccBarrierTransInCancel))
|
||||
@ -35,6 +35,7 @@ func TccBarrierAddRoute(app *gin.Engine) {
|
||||
app.POST(BusiAPI+"/TccBTransOutCancel", common.WrapHandler(TccBarrierTransOutCancel))
|
||||
dtmcli.Logf("examples listening at %d", BusiPort)
|
||||
}
|
||||
}
|
||||
|
||||
const transInUID = 1
|
||||
const transOutUID = 2
|
||||
|
||||
@ -10,8 +10,8 @@ import (
|
||||
// XaClient XA client connection
|
||||
var XaClient *dtmcli.XaClient = nil
|
||||
|
||||
// XaSetup 挂载http的api,创建XaClient
|
||||
func XaSetup(app *gin.Engine) {
|
||||
func init() {
|
||||
setupFuncs["XaSetup"] = func(app *gin.Engine) {
|
||||
var err error
|
||||
XaClient, err = dtmcli.NewXaClient(DtmServer, config.DB, Busi+"/xa", func(path string, xa *dtmcli.XaClient) {
|
||||
app.POST(path, common.WrapHandler(func(c *gin.Context) (interface{}, error) {
|
||||
@ -20,6 +20,7 @@ func XaSetup(app *gin.Engine) {
|
||||
})
|
||||
e2p(err)
|
||||
}
|
||||
}
|
||||
|
||||
// XaFireRequest 注册全局XA事务,调用XA的分支
|
||||
func XaFireRequest() string {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user