Azure API Management是否可以同步发布到Azure Service Bus?

问题描述 投票:0回答:1

我正在将单片应用程序转换为微服务。我在Service Fabric中设置了一个API管理层和一个Service Bus。我们的想法是使用消息与微服务进行通信,以便他们不了解彼此。

当一个微服务需要信息时,它将消息发布到服务总线并且它得到满足并且发送和关联回复。

唯一的问题是API Management将消息发布到服务总线并返回而不等待回复,因此客户端没有得到响应。

有没有办法让API Management等待回复?

这需要一种中间的经纪人服务吗?

在API管理可以调用​​的每个微服务上都有一个REST层,然后服务会使用服务总线吗?

谢谢你的帮助。

更新:

我认为让Api Management等待的唯一方法是使用逻辑应用程序。对此不确定。

那里有Azure专家吗?

azure azureservicebus azure-api-management azure-servicebus-queues
1个回答
1
投票

实际上预计APIM的行为方式。

服务总线旨在解耦不同的(微)服务,并且本质上没有请求 - 响应操作风格,尽管它可以以这种方式实现。

这是设计/实现系统的一种方法

  • 首先,对于使用Service Bus的请求 - 响应样式操作,您可以通过使用两个队列来实现它。 一个用于发送请求(以及一些唯一ID - GUID将执行),另一个用于接收响应(其中再次包含请求中发送的唯一ID)。
  • 不要让APIM与Service Bus一起使用,而是调用逻辑应用程序或函数来为您执行此操作。
  • 最后,等待响应将取决于您的用例。 如果你有一个很长的运行任务,最好遵循Logic Apps和函数(using Durable Functions)实现的异步模式,它会立即返回一个202 Accepted响应,其状态URI可以让客户端轮询更新。 但如果它是一个快速响应(在HTTP请求超时之前),您可能会等待响应服务总线消息并返回响应。为此,您的Logic App或Function必须使用相同的唯一ID轮询/等待服务总线消息,然后返回响应。
© www.soinside.com 2019 - 2024. All rights reserved.