首页 > 解决方案 > 用于 AWS AppSync 中的异步计算的 Graphql 订阅

问题描述

我希望我的 React Web 应用程序使用 AWS AppSync 订阅接收消息,这些消息是基于对不同于客户端最初提交变异请求的类型的类型的变异而异步计算的。例如,如果用户投了“票”,我希望服务器立即响应,但服务器还应该向客户端发送整个数据库的聚合,这些聚合可能需要额外的时间来计算,或者可以以较慢的速度计算。


我假设 AppSync 会通知客户,如果他们订阅了 Graphql,比如说“聚合”类型。

Q1。如果我编写一个服务器端客户端,即使在客户端收到原始投票请求的响应后,将聚合突变写入 AppSync API,Web 客户端也会收到聚合订阅的消息吗?


我假设我需要创建一个服务器端 Graphql 客户端来编写聚合突变。我想这就像一个http客户端一样简单。

Q2。当至少一个用户提交突变(投票)时,如何触发计算聚合的代码?我最好的猜测是我需要使用 Lambda 函数来处理原始突变(投票),但在响应 Web 客户端之前,它会启动另一个进程(可能是不同的 Lambda Fn),最终会改变聚合。


我还没有集成 Apollo 客户端,所以我想暂时保持 Web 客户端代码简单。

标签: graphqlaws-appsyncgraphql-subscriptions

解决方案


如果我理解您的问题,您想要启动聚合过程,然后在有新聚合时收到订阅消息。要启动聚合,您可以根据存储数据的位置使用任意数量的东西。例如,如果您使用的是 DynamoDB,则可以在需要投票的更改时使用 DynamoDB 流启动聚合。或者,就像你说的,你可以启动一个 lambda 或其他进程来响应订阅消息进行投票。这些解决方案中的任何一个都需要进行突变以写入聚合,这将导致订阅消息给订阅聚合的客户端。


推荐阅读