将相关ID附加到Guzzle 6请求

时间:2016-10-22 12:01:35

标签: php symfony microservices guzzle

我想知道如何将关联ID (或请求ID )传递给Guzzle 6请求。我没有找到任何可以满足我的问题所以我决定创建一个新的。

我的大多数微服务都在 Symfony3 堆栈上运行。他们通过HTTP相互通信,我使用Guzzle 6。我想在入口点(用例 - 命令或查询 - 启动)中生成一个唯一的请求ID ,并将其传递给其他服务的下一个请求。其他应用程序还应该在与其相关服务进行通信时获取已生成的请求ID ,并将其添加到以下请求中(依此类推......)。该请求ID将是有用的,例如记录事件。

我想到了最有效的方法。虽然在Symfony中处理时生成唯一ID并将其附加到请求元数据(例如在标题中)非常简单,但我不知道如何处理API客户端。到目前为止我的想法:

  • 当然,我可以在每个提出请求的地方附上一个标题,但它看起来有点“臭”并且难以维护。此外,在我的API Client类中创建新方法时,我需要记住在请求中添加标题。
  • 我还在考虑创建新的Guzzle中间件,它将负责为我添加标题。但是因为Symfony3有一个不同于Request的实现而不是Guzzle( PSR 7 这里)我不知道它是否合法:)当然我可以使用Symfony的PSR Http Bridge转换请求但我尚未使用它,我担心它会破坏注入HttpFoundation\Request的类的兼容性。然而,到目前为止,这种解决方案似乎是最好的。

我想听听你的一些意见。如何做到这一点并轻松维护它,保持清洁架构和清洁设计的原则?

感谢您的回答。

0 个答案:

没有答案