我们使用sangriagraphql来处理中继查询。从ui获取查询时的graphql代码生成一条kafka消息,相应的微服务使用并处理该消息,然后将graphql代码使用的消息发布到kafka。问题是,我们的graphql使用者如何将结果Map到原始请求,并将其发送回客户端?
val StoreType = ObjectType("Store", List[Field[UserRepo, Unit]](
Field("cart", Cart,
arguments = cart_id :: user_id :: sku_id :: quantity :: price :: operation :: Nil,
resolve = c ⇒ c.ctx.callCartService(c arg cart_id, c arg user_id, c arg sku_id, c arg quantity,c arg price, c arg operation))
))
callcartservice将向kafka生成消息并发送到cart micro服务,cart micro服务将向kafka发回cart消息以供graphql使用。
QueryParser.parse(query) match {
// query parsed successfully, time to execute it!
case Success(queryAst) =>
complete(Executor.execute(SchemaDefinition.schema, queryAst, new UserRepo,
variables = vars,
operationName = operation
))
// can't parse GraphQL query, return error
case Failure(error) =>
complete(BadRequest, JsObject("error" -> JsString(error.getMessage)))
}
}
是否有一种方法让完整的客户机等待消费者阅读购物车消息并返回到客户机?
暂无答案!
目前还没有任何答案,快来回答吧!