Git Product home page Git Product logo

Comments (5)

yedf2 avatar yedf2 commented on May 26, 2024

欢迎PR

from dtm.

wencan avatar wencan commented on May 26, 2024

今天在测试dtm workflow
发现有两个办法可以带trace id
一、NewRequest().SetHeader
二、Do() 自定义处理

from dtm.

jorahbi avatar jorahbi commented on May 26, 2024

具体是怎么操作啊,能贴上示例代码不

from dtm.

wencan avatar wencan commented on May 26, 2024

@jorahbi
拿worflow来说,可以这么干:

workflow.Register("step", func(wf *workflow.Workflow, data []byte) error {
	var req Request
	err := json.Unmarshal(data, &req)
	if err != nil {
		fmt.Println(err)
		return nil
	}
        traceID := req.TraceID

	_, err = wf.NewBranch().OnRollback(func(bb *dtmcli.BranchBarrier) error {
		_, err = wf.NewRequest().SetHeader("Trace-Id", traceID).SetBody(...).Post("http://127.0.0.1:29091/step1_rollback")
		return err
	}).NewRequest().SetHeader("Trace-Id", traceID).SetBody(...).Post("http://127.0.0.1:29091/step1")
	if err != nil {
		return err
	}
	
	... ...

	return nil
})

from dtm.

janrs-io avatar janrs-io commented on May 26, 2024

我今天也遇到这个问题了。昨天升级了dtm,返现saga事务传递的traceid会被修改。以下是我的代码

// 扣产品库存事务
	decreaseProductReq := &productPBV1.DecreaseStockRequest{}
	decreaseProductReq.Quantity = 1
	decreaseProductReq.Id = request.ProductId

	productDecreaseStock := "product.rgrpc-dev:50051/proto.product.v1.ProductService/DecreaseStock"
	productDecreaseStockRevert := "product.rgrpc-dev:50051/proto.product.v1.ProductService/DecreaseStockRevert"

	// 创建订单事务
	orderNo := uuid.NewString()
	request.OrderNo = orderNo
	createOrder := "order.rgrpc-dev:50051/proto.order.v1.OrderService/Create"
	createOrderRevert := "order.rgrpc-dev:50051/proto.order.v1.OrderService/CreateRevert"

	saga := dtmgrpc.NewSagaGrpc("dtm-svc.dtm:36790", uuid.NewString())
	saga.Add(createOrder, createOrderRevert, request)
	saga.Add(productDecreaseStock, productDecreaseStockRevert, decreaseProductReq)
	saga.WaitResult = true
	if err := saga.Submit(); err != nil {
		_ = level.Error(s.logger).Log("msg", "创建订单失败,错误:"+err.Error())
		return nil, status.Error(codes.Aborted, "创建订单失败")
	}
	return &emptypb.Empty{}, nil

有大佬知道怎么处理的吗。没升级之前都好好的。升级了就不行了。

from dtm.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.