用于AWS AppSync中的异步计算的Graphql订阅

时间:2019-09-18 03:18:40

标签: graphql aws-appsync graphql-subscriptions

我希望我的React Web应用程序使用AWS AppSync订阅接收消息,该消息基于异步地计算出的突变(基于客户端最初提交突变请求的类型之外的其他类型的突变)来计算。例如,如果用户投了“票”,我希望服务器立即做出响应,但是服务器还应该向客户端发送整个数据库的聚合,这可能需要花费更多的时间来计算或可以以较低的速率进行计算。 / p>


我假设AppSync会通知客户是否向Graphql订阅了“聚合”类型。

Q1。如果我编写了一个服务器端客户端,该客户端在收到原始投票请求的响应后将Aggregation突变写入AppSync API,那么Web客户端是否会收到有关Aggregation订阅的消息?


我认为我将需要制作一个服务器端Graphql客户端来编写聚合突变。我想这就像一个HTTP客户端一样简单。

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


我尚未集成Apollo客户端,因此我想暂时简化Web客户端代码。

1 个答案:

答案 0 :(得分:1)

如果我理解您的问题,那么您希望启动汇总过程,然后在出现新的汇总时收到订阅消息。要开始聚合,您可以根据存储数据的位置使用多种方法。例如,如果您使用的是DynamoDB,则可以在投票发生变化时使用DynamoDB流启动聚合。或者,就像您说的那样,您可以启动lambda或其他过程来响应要订阅的订阅消息。这些解决方案中的任何一个都需要进行更改以写入聚合,这将导致向订阅了Aggregation的客户端发送订阅消息。