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

时间:2019-04-12 12:25:47

标签: azure azureservicebus azure-api-management azure-servicebus-queues

我正在将单片应用程序转换为微服务。我已经在Service Fabric中设置了API管理层和Service Bus。想法是使用消息与微服务通信,以使它们彼此之间不了解。

当一个微服务需要信息时,它会在服务总线上发布一条消息并得到满足,并发送并关联一个答复。

唯一的问题是,API管理将消息发布到服务总线并返回而无需等待答复,因此客户端无法获得响应。

是否可以让API Management等待回复?

这之间是否需要某种经纪人服务?

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

感谢您的帮助。

更新:

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

那里有Azure专家吗?

1 个答案:

答案 0 :(得分:1)

APIM的行为方式实际上是预期的。

Service Bus旨在解耦不同的(微)服务,尽管可以通过这种方式实现,但它固有地没有请求-响应式的操作。

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

  • 首先,对于Service Bus的请求-响应样式操作,一种实现方法是使用两个队列

    一个用于发送请求(连同一些唯一ID-GUID一样),另一个用于接收响应(再次包含请求中发送的唯一ID)。

  • 不是让APIM与Service Bus一起工作,而是调用为您执行此操作的Logic App或Function。

  • 最后,等待响应取决于您的用例。

    如果您的任务运行时间很长,则最好遵循由Logic Apps和函数(using Durable Functions)实现的异步模式,这些函数会立即返回202 Accepted响应并显示一个状态您的客户端可以轮询更新的URI。

    但是,如果响应迅速(在HTTP请求超时之前),则您可以等待响应服务总线消息,然后返回响应。为此,您的Logic App或Function必须轮询/等待具有相同唯一ID的服务总线消息,然后返回响应。