0

使用 Apollo Gateway 时,Gateway 会将突变直接转发到相关的实现服务。此类请求是同步的。

有没有一种方法可以让 Apollo Gateway 将所有突变发布到像 rabbitmq 这样的消息代理,以便我们可以在网关和实现服务之间实现异步通信?

4

1 回答 1

0

作为对您的问题的澄清:请求不是同步的,而是串行的。

与 GraphQL 规范对“允许并行化”开放的查询不同,突变必须以一系列方式运行。

查询变异规范的链接

6.2.1 查询

...

  1. 令 data 为正常运行 ExecuteSelectionSet(selectionSet, queryType, initialValue, variableValues) 的结果(允许并行化)。

6.2.2 突变

...

  1. 令 data 为连续运行 ExecuteSelectionSet(selectionSet, mutationType, initialValue, variableValues) 的结果。

广泛采用的模式是您的突变应该“在完成后返回,并等到它拥有该数据”。然而,理论上,你可以让你的突变开始一些事件,然后回应说它已经发生了。然后,您可以使用订阅来确定响应何时准备就绪。同样,这并不是真正的“通常使用 GraphQL 的方式”,但从理论上讲,你可以。

于 2020-07-12T01:18:33.313 回答