我正在尝试找出一个合适的方法来通过我的堆栈传递一个request-id(来自restify请求头的x-request-id);跨越thrift服务间调用,以及rabbitmq队列消息。目标是在任何地方,在任何服务中,我都可以将错误或事件关联回发起的http请求。用Node做这个有一个已知的做法吗?我想避免通过几乎每个函数调用来传递上下文。
我已经研究过New Relic处理仪器的方式,而且还有这个博客:https://opbeat.com/blog/posts/how-we-instrument-nodejs/;但是这些类型的工具需要挂钩大量的节点核心库调用,并且实际上并没有帮助在thrift调用中传递上下文。
如何从请求中获取一个restify标头ID,例如“x-request-id”,并在我的堆栈中更深入地访问它(即使在异步回调中),而不修改每个函数来传递值?
我也正在寻找一种干净的方式来传递它通过所有节俭的调用(跨越服务边界)。
这是使用TypeScript和Node.js 5.x
谢谢!
答案 0 :(得分:0)
使用Node
执行此操作是否已知
在NodeJ中,只要您需要请求上下文内容,就可以移动request
。
对于其他所有系统,您需要以请求系统格式携带的内容。例如。对于事件存储,我们将其存储在事件元数据中。
对于thrift我建议只将它作为属性添加到每个响应中回显的每个查询中。