Azure API 管理是否可以同步发布到 Azure 服务总线?



我正在将整体式应用程序转换为微服务。 我已经在 Service Fabric 中设置了一个 API 管理层和一个服务总线。 这个想法是使用消息与微服务通信,这样它们就不知道彼此。

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

唯一的问题是 API 管理将消息发布到服务总线并在不等待回复的情况下返回,因此客户端不会获得响应。

有没有办法让 API 管理等待回复?

这需要介于两者之间的某种经纪人服务吗?

是否最好在每个微服务上有一个 REST 层,API 管理可以调用该层,然后服务将使用服务总线?

感谢您的任何帮助。

更新:

我认为让 API 管理等待的唯一方法是使用逻辑应用程序。 不确定这一点。

有 Azure 专家吗?

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

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

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

  • 首先,对于使用服务总线进行请求-响应样式操作,实现该操作的一种方法是使用两个队列

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

  • 不要让 APIM 与服务总线配合使用,而是调用逻辑应用或函数来为你执行此操作。

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

    如果任务运行时间很长,最好遵循逻辑应用和函数(使用持久函数)实现的异步模式,该模式会立即返回202 Accepted响应,其中包含客户端可以轮询更新的状态 URI。

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

最新更新