From d3eb568929395f4ee4f0736cba1d7817af024540 Mon Sep 17 00:00:00 2001 From: yedf2 <120050102@qq.com> Date: Thu, 12 Aug 2021 18:20:44 +0800 Subject: [PATCH] barrier grpc used --- README.md | 2 +- dtmgrpc/barrier.go | 8 ++++++++ examples/base_types.go | 4 ++-- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 80b314b..aafe370 100644 --- a/README.md +++ b/README.md @@ -46,7 +46,7 @@ DTM是首款golang的开源分布式事务管理器,优雅的解决了幂等 |AT事务|||AT与XA类似,性能更好,但有脏回滚| | SAGA事务 |简单模式 |状态机复杂模式 |dtm的状态机模式在规划中| |事务消息|||dtm提供类似rocketmq的事务消息| -|通信协议|HTTP|dubbo等协议,无HTTP|dtm后续将支持grpc类协议| +|通信协议|HTTP、GRPC|dubbo等协议,无HTTP|| |star数量|github stars|github stars|dtm从20210604发布0.1,发展快| 从上面对比的特性来看,如果您的语言栈包含了Java之外的语言,那么dtm是您的首选。如果您的语言栈是Java,您也可以选择接入dtm,使用子事务屏障技术,简化您的业务编写。 diff --git a/dtmgrpc/barrier.go b/dtmgrpc/barrier.go index 468407a..b68c5ee 100644 --- a/dtmgrpc/barrier.go +++ b/dtmgrpc/barrier.go @@ -27,3 +27,11 @@ func (bb *BranchBarrier) Call(db *sql.DB, busiCall dtmcli.BusiFunc) (rerr error) } return err } + +// BarrierFromGrpc 从BusiRequest生成一个Barrier +func BarrierFromGrpc(in *BusiRequest) (*BranchBarrier, error) { + b, err := dtmcli.BarrierFrom(in.Info.TransType, in.Info.Gid, in.Info.BranchID, in.Info.BranchType) + return &BranchBarrier{ + BranchBarrier: b, + }, err +} diff --git a/examples/base_types.go b/examples/base_types.go index 3c41b7e..87a57b3 100644 --- a/examples/base_types.go +++ b/examples/base_types.go @@ -79,8 +79,8 @@ func MustBarrierFromGin(c *gin.Context) *dtmcli.BranchBarrier { } // MustBarrierFromGrpc 1 -func MustBarrierFromGrpc(in *dtmgrpc.BusiRequest) *dtmcli.BranchBarrier { - ti, err := dtmcli.BarrierFrom(in.Info.TransType, in.Info.Gid, in.Info.BranchID, in.Info.BranchType) +func MustBarrierFromGrpc(in *dtmgrpc.BusiRequest) *dtmgrpc.BranchBarrier { + ti, err := dtmgrpc.BarrierFromGrpc(in) dtmcli.FatalIfError(err) return ti }