You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@rocketmq.apache.org by GitBox <gi...@apache.org> on 2021/05/25 10:26:09 UTC
[GitHub] [rocketmq-client-go] smiletrl opened a new issue #669: [Master] pass context in transaction message.
smiletrl opened a new issue #669:
URL: https://github.com/apache/rocketmq-client-go/issues/669
**FEATURE REQUEST**
1. Please describe the feature you are requesting.
I want to pass context into transaction listener `ExecuteLocalTransaction`. So it looks like `ExecuteLocalTransaction(context.Context, *Message) LocalTransactionState`. This passed context comes from `SendMessageInTransaction(ctx context.Context, msg *primitive.Message) (*primitive.TransactionSendResult, error)`.
Here're three scenarios for this context usage.
- I want to add jaeger tracing support for everything happening inside `ExecuteLocalTransaction`. The jaeger tracing needs to use a parent context, so jaeger can track operations in a tracing life cycle. For example, here's an usage example for context inside [mongo operation](https://github.com/smiletrl/micro_ecommerce/blob/master/pkg/mongodb/mongodb.go#L59). If mongodb has been invoked inside `ExecuteLocalTransaction`, then we can track this mongodb operation through the passed context.
- I want `ExecuteLocalTransaction` to cancel early when the passed context has canceled. For example, if there's one long time running sql query inside `ExecuteLocalTransaction`, then it should cancel the query if the outer context has canceled.
- I want to pass additional values into `ExecuteLocalTransaction`, like [what this issue needs](https://github.com/apache/rocketmq-client-go/issues/668)
2. Provide any additional detail on your proposed use case for this feature.
see attached patch.
[local-transaction.txt](https://github.com/apache/rocketmq-client-go/files/6538510/local-transaction.txt)
2. Indicate the importance of this issue to you (blocker, must-have, should-have, nice-to-have). Are you currently using any workarounds to address this issue?
For scenario three, one workaround is to pass values through the message. For scenario 1 and 2, there're no workarounds. It's a blocker for our development process. We must need be able to track time consuming tasks inside `ExecuteLocalTransaction` through the whole request cycle, and we want to be able to cancel long time running tasks inside `ExecuteLocalTransaction` when we want.
4. If there are some sub-tasks using -[] for each subtask and create a corresponding issue to map to the sub task:
no nope.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
users@infra.apache.org