如何在 NestJS 中热重载联邦网关

     2023-03-08     21

关键词:

【中文标题】如何在 NestJS 中热重载联邦网关【英文标题】:how to hot reload federation gateway in NestJS 【发布时间】:2021-08-08 09:44:46 【问题描述】:

问题

在联邦嵌套应用程序中,网关会收集来自其他服务的所有模式并形成完整的图表。问题是,子模式改变后如何重新运行模式集合?

当前的解决方法

重启网关可以解决问题,但似乎不是一个优雅的解决方案。

其他资源

    Apollo 服务器支持managed federation,它基本上恢复了网关和服务之间的依赖关系。遗憾的是,我找不到任何与 NestJS 相关的内容。

【问题讨论】:

【参考方案1】:

在使用 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>

【讨论】:

有没有办法在 Ktor 中热重载静态文件?

】有没有办法在Ktor中热重载静态文件?【英文标题】:Isthereanywaytohot-reloadstaticfilesinKtor?【发布时间】:2020-11-0720:19:45【问题描述】:我一直在关注ktortutorial制作网站,并注意到每次我对资源文件进行更改时,我都必须重新编译... 查看详情

在 Spring Boot 2.1 中热重载 Thymeleaf 模板和资源包

】在SpringBoot2.1中热重载Thymeleaf模板和资源包【英文标题】:HotReloadingThymeleafTemplatesandResourceBundlesinSpringBoot2.1【发布时间】:2019-07-1714:33:45【问题描述】:我创建了一个启用i18n的SpringBoot2.1.3应用程序,添加了开发工具,并安装了F... 查看详情

使用 Webpack Dev Middleware 在 Webpack 中热重载 CSS 文件的最简单方法

】使用WebpackDevMiddleware在Webpack中热重载CSS文件的最简单方法【英文标题】:SimplestwaytohotreloadaCSSfileinWebpackusingWebpackDevMiddleware【发布时间】:2016-09-0906:59:04【问题描述】:我有一个用TypeScript编写的项目,我可以利用我的Node.js服务... 查看详情

使用 golang 在 docker 中热重载不起作用(github.com/cosmtrek/air)

】使用golang在docker中热重载不起作用(github.com/cosmtrek/air)【英文标题】:HotReloadnotworkingindockerwithgolang(github.com/cosmtrek/air)【发布时间】:2022-01-1603:45:36【问题描述】:我已经尝试了所有方法都没有解决我的热重载问题,容器会... 查看详情

热重载不起作用,但在 Android Studio 中热重启有效

】热重载不起作用,但在AndroidStudio中热重启有效【英文标题】:Hotreloaddoesn\'tworkbuthotrestartworksinAndroidStudio【发布时间】:2021-05-1600:43:18【问题描述】:我最近开始学习Flutter。我从VisualStudio代码开始,一切正常。我决定尝试Android... 查看详情

NESTJS 网关/Websocket - 如何通过 socket.emit 发送 jwt access_token

】NESTJS网关/Websocket-如何通过socket.emit发送jwtaccess_token【英文标题】:NESTJSGateway/Websocket-howtosendjwtaccess_tokenthroughsocket.emit【发布时间】:2020-02-2810:03:48【问题描述】:我正在为我的项目使用默认护照jwtAuthGuard。这适用于我的帖子... 查看详情

Nestjs websocket网关,如何从握手中解析签名cookie以进行保护授权?

】Nestjswebsocket网关,如何从握手中解析签名cookie以进行保护授权?【英文标题】:Nestjswebsocketgateway,howtoparsesignedcookiesfromhandshakeforguardauthorization?【发布时间】:2020-04-1318:27:57【问题描述】:我的守卫包含以下代码:letclient:Socket=c... 查看详情

以网关服务器为服务的 Apollo 联邦

】以网关服务器为服务的Apollo联邦【英文标题】:Apollofederationwithgatewayserverasservice【发布时间】:2019-10-2305:08:13【问题描述】:问题的摘要已在Github问题中描述:https://github.com/apollographql/apollo-server/issues/2794简而言之,有没有办... 查看详情

vue热重载

...官网使用webpack的HotModuleReplacementAPI,Vuex支持在开发过程中热重载mutation、module、action和getter。你也可以在Browserify中使用browserify-hmr插件。对于mutation和模块,你需要使用store.hotUpdate()方法://store.jsimportVuefrom‘vue‘importVuexfrom‘ 查看详情

Xamarin.Forms 热重载在 UWP 中不起作用

...0-2505:12:18【问题描述】:我已阅读并遵循此页面上有关UWP中热重载的所有提示:https://docs.microsoft.com/en-us/visualstudio/xaml-tools/xaml-hot-reload-troubleshooting?vie 查看详情

如何在 Nestjs 中刷新令牌

】如何在Nestjs中刷新令牌【英文标题】:HowtorefreshtokeninNestjs【发布时间】:2019-04-1704:20:09【问题描述】:importExtractJwt,Strategyfrom\'passport-jwt\';importAuthServicefrom\'./auth.service\';importPassportStrategyfrom\'@nestjs/passport\';importIn 查看详情

无法在 JBoss 中热部署

】无法在JBoss中热部署【英文标题】:Unabletohot-deployinJBoss【发布时间】:2020-02-1810:53:15【问题描述】:我想在JBoss中热部署应用程序,为此我在这里找到了指南here我已经下载了JBoss-eap-7.0,但我没有看到指南中提到的名为jboss-as-we... 查看详情

NestJs - 如何在拦截器上获取请求正文

】NestJs-如何在拦截器上获取请求正文【英文标题】:NestJs-Howtogetrequestbodyoninterceptors【发布时间】:2019-01-2501:46:56【问题描述】:我需要在我的拦截器上获取请求正文,然后它才能到达我的控制器:importInjectable,NestInterceptor,Executi... 查看详情

NestJS:如何在@Query 对象中转换数组

】NestJS:如何在@Query对象中转换数组【英文标题】:NestJS:Howtotransformanarrayina@Queryobject【发布时间】:2020-04-0423:11:13【问题描述】:我是NestJS的新手,我正在尝试从查询参数中填充过滤器DTO。这是我所拥有的:查询:localhost:3000/ap... 查看详情

NestJS:如何在 canActivate 中模拟 ExecutionContext

】NestJS:如何在canActivate中模拟ExecutionContext【英文标题】:NestJS:HowcanImockExecutionContextincanActivate【发布时间】:2020-10-1702:33:03【问题描述】:我在Guard中间件中模拟ExecutionContext时遇到问题。这是我的RoleGuard扩展JwtGuard@Injectable()expo... 查看详情

如何在 NestJS 中设置参数?

】如何在NestJS中设置参数?【英文标题】:HowtomakeparamrequiredinNestJS?【发布时间】:2019-03-2719:09:59【问题描述】:我想让我的路由Query参数是必需的。如果它丢失,我希望它会抛出404HTTP错误。@Controller(\'\')exportclassAppControllerconstruct... 查看详情

NestJS - 在微服务中结合 HTTP 和 RabbitMQ

】NestJS-在微服务中结合HTTP和RabbitMQ【英文标题】:NestJS-CombineHTTPwithRabbitMQinmicroservices【发布时间】:2019-05-2810:32:51【问题描述】:我有一些微服务,它们通过API网关公开。网关负责处理身份验证和路由到系统。网关背后的服务... 查看详情

如何在 NestJS 中跨模块全局注入价值?

】如何在NestJS中跨模块全局注入价值?【英文标题】:HowtogloballyinjectvalueacrossmodulesinNestJS?【发布时间】:2019-08-2002:58:58【问题描述】:我正在使用nx工作区和nestjs。我想在Nestjs应用程序的多个模块中注入一个值。最终目标是重现... 查看详情