graphql - 用于 AWS AppSync 中的异步计算的 Graphql 订阅
问题描述
我希望我的 React Web 应用程序使用 AWS AppSync 订阅接收消息,这些消息是基于对不同于客户端最初提交变异请求的类型的类型的变异而异步计算的。例如,如果用户投了“票”,我希望服务器立即响应,但服务器还应该向客户端发送整个数据库的聚合,这些聚合可能需要额外的时间来计算,或者可以以较慢的速度计算。
我假设 AppSync 会通知客户,如果他们订阅了 Graphql,比如说“聚合”类型。
Q1。如果我编写一个服务器端客户端,即使在客户端收到原始投票请求的响应后,将聚合突变写入 AppSync API,Web 客户端也会收到聚合订阅的消息吗?
我假设我需要创建一个服务器端 Graphql 客户端来编写聚合突变。我想这就像一个http客户端一样简单。
Q2。当至少一个用户提交突变(投票)时,如何触发计算聚合的代码?我最好的猜测是我需要使用 Lambda 函数来处理原始突变(投票),但在响应 Web 客户端之前,它会启动另一个进程(可能是不同的 Lambda Fn),最终会改变聚合。
我还没有集成 Apollo 客户端,所以我想暂时保持 Web 客户端代码简单。
解决方案
如果我理解您的问题,您想要启动聚合过程,然后在有新聚合时收到订阅消息。要启动聚合,您可以根据存储数据的位置使用任意数量的东西。例如,如果您使用的是 DynamoDB,则可以在需要投票的更改时使用 DynamoDB 流启动聚合。或者,就像你说的,你可以启动一个 lambda 或其他进程来响应订阅消息进行投票。这些解决方案中的任何一个都需要进行突变以写入聚合,这将导致订阅消息给订阅聚合的客户端。
推荐阅读
- hashmap - Java:我的 HashMap 查找失败,因为它是通过 REFERENCE 而不是 VALUE 进行的。我该如何解决?
- c# - 为什么我的绑定在没有 SubscribeOn/ObserveOn 的情况下不会更新?
- python - 使用 sklearn 在 python 中使用 BernoulliNB 后无法找到正确的预测结果
- javascript - js 致命错误 - 在 addtcart 中输出 nri
- python - 无法在 Windows 10 上进行 pipenv 安装
- javascript - 带有视差横幅的粘性导航
- composer-php - 具有依赖项的 Composer 包给了我错误
- php - 插入我的本地 sql server
- reactjs - 反应异步组件WillUnmount
- xml - 通过 isXML() 但在 ColdFusion 中失败 xmlParse() 的 XML