问题
在联邦嵌套应用程序中,网关收集来自其他服务的所有模式并形成完整的图。问题是,如何在子模式更改后重新运行模式集合?
当前的解决方法
重启网关解决了这个问题,但它似乎不是一个优雅的解决方案。
其他资源
- Apollo 服务器支持托管联合,这基本上恢复了网关和服务之间的依赖关系。可悲的是,我找不到任何与 NestJS 相关的东西。
在联邦嵌套应用程序中,网关收集来自其他服务的所有模式并形成完整的图。问题是,如何在子模式更改后重新运行模式集合?
重启网关解决了这个问题,但它似乎不是一个优雅的解决方案。
当使用 NestJS 配置网关应用程序时,并且已经与 Apollo studio 集成时,您无需在 GraphQLGatewayModule 中定义任何 serviceList。这是您的模块初始化的样子:
GraphQLGatewayModule.forRootAsync({
useFactory: async () => ({
gateway: {},
server: {
path: '/graphql',
},
}),
})
应在托管网关应用程序的机器上声明以下环境变量:
APOLLO_KEY: "service:<graphid>:<hash>"
APOLLO_SCHEMA_CONFIG_DELIVERY_ENDPOINT: "https://uplink.api.apollographql.com/"
部署 Federated GraphQL 服务后,您可能需要运行 apollo/rover CLI service:push 命令,如下所示来更新写入模式注册表的模式,然后推送到网关定期轮询的上行 URL :
npx apollo service:push --graph=<graph id> --key=service:<graph id>:<hash> --variant=<environment name> --serviceName=<service name> --serviceURL=<URL of your service with /graphql path> --endpoint=<URL of your service with /graphql path>