【发布时间】:2018-05-21 08:18:36
【问题描述】:
结构
这是一个如何在我们当前的基础架构中最好地使用 Apollo Client 2 的问题。我们有一个连接到多个其他端点的 Graphql 服务器(Apollo 服务器 2)。突变通过 RabbitMQ 发送,我们的 Graphql 也监听 RabbitMQ,然后通过订阅推送到客户端。
实施
我们有一个 Apollo 服务器,我们发送突变,这些总是给出null,因为它们是异步的。结果将通过订阅发回。
我目前是这样实现的。
- 发送突变。
- 创建
optimisticResponse。 - 通过
writeQuery在update函数中乐观地更新状态。 - 当真正的响应到来(为空)时,在
update方法中再次使用optimisticResponse。 - 等待订阅返回响应。
- 然后用实际数据刷新状态/组件。
如您所见.. 这不是最理想的方式,而且客户端非常复杂。
希望尽可能让客户保持沉默并降低复杂性。 似乎 Apollo 主要是为同步突变而设计的(这是合乎逻辑的)。
您对更好的实现方式有何想法?
【问题讨论】:
标签: asynchronous rabbitmq graphql apollo apollo-client