使用异步消息传递(Azure 服务总线)处理客户端 Http 请求

Using asynchronous messaging (Azure service bus) to handle Client Http requests

我有一个基于微服务的架构。

服务 A 有关于购物车的详细信息,购物车模型如下所示:

Cart {
  Id,
  Items,
  Price,
  UserId
}

服务 B 有用户详细信息。用户模型:

User {
  Id,
  FirstName,
  LastName,
  Email
}

我想通过与服务 B 通信从服务 A 获取这些用户详细信息。我正在尝试使用消息队列异步实现微服务之间的这种通信。我面临的问题是如何将特定消息与来自客户端的相应 HTTP 请求相关联?

使用服务之间的异步通信来处理客户端 HTTP 请求是个好主意吗?

更具体地说,我如何将上图中步骤 5 中收到的消息与步骤 1 中的 HTTP 请求处理程序相关联。

当您的两个进程完全断开连接时,服务总线工作得很好,例如下订单后的下游处理。您需要额外的确定性层,即下游过程将 运行 即使需要重试一两次而无需等待。在您需要立即响应的情况下尝试使用它会导致您看到的问题——这不是它的用途。

最好的解决方案是让您的购物车服务通过 http 调用用户服务,以便数据保持正确关联。如果您想在两者之间保留一个层以消除两个服务之间的直接依赖性,API Management 之类的东西会更合适。