所以......我已经坚持了几天了,我已经遵循了文档和梨的建议但似乎没有用,我正在使用 Golang 和 GRPC 并在其中实施一个新的遗物,以跟踪事务和整体性能,我设法声明事务和段,但就数据库事务而言,它们没有出现在数据库部分,我试图在执行事务时将新的遗留上下文传递到 Redis 客户端,也尝试使用背景上下文和当前事务上下文,但似乎不起作用。进行了查询但没有报告任何数据这是我所拥有的示例
1 - 进行交易的功能之一
// updateCache ...
func updateCached(data *statemachinepkgv1.StateMachine, sessionID string, ctx context.Context) (*statemachinepkgv1.StateMachine, error) {
//Transaction and segment logic
//this does not create a brand new relic application, just gets the main instance
relic, err := tools.InitRelic()
if err != nil {
log.Fatalf("failed to create/instace newrelic.NewApplication: %v", err)
}
txn := relic.StartTransaction("redis", nil, nil)
defer newrelic.StartSegment(txn, "updateCached").End()
defer newrelic.StartSegment(tools.CurrentTransaction, "updateCached").End() //tools.CurrentTransaction has the context of main web transaction stored with singleton design
defer txn.End()
dataParse, err := json.Marshal(data)
if err != nil {
return data, err
}
duration, err := time.ParseDuration(os.Getenv("GO_STATEMACHINE_REDIS_TIMELIFE"))
if err != nil {
return data, err
}
//REDIS LOGIC
dbTransaction := newrelic.FromContext(ctx)
newRelicContext := newrelic.NewContext(context.Background(), dbTransaction)
err = masterClient.Set(newRelicContext, sessionID, string(dataParse), duration).Err()
if err != nil {
return data, err
}
return data, nil
}
呼啦一阵风
海绵宝宝撒
随时随地看视频慕课网APP
相关分类