混合应用是指能够监听来自两个或多个不同来源请求的应用。它可以组合 HTTP 服务器与微服务监听器,甚至只是多个不同的微服务监听器。默认的 createMicroservice 方法不支持多个服务器,因此在这种情况下,每个微服务都必须手动创建和启动。为此,可以通过 connectMicroservice() 方法将 INestApplication 实例与 INestMicroservice 实例连接起来。
app.listen(port) 方法会在指定地址启动 HTTP 服务器。如果您的应用不处理 HTTP 请求,则应改用 app.init() 方法。
要连接多个微服务实例,需为每个微服务调用 connectMicroservice() 方法:
要将 @MessagePattern() 绑定到混合应用中多个微服务里的单一传输策略(例如 MQTT),我们可以传入类型为 Transport 的第二个参数,这是一个包含所有内置传输策略定义的枚举。
@Payload()、@Ctx()、Transport 和 NatsContext 都是从 @nestjs/microservices 导入的。
默认情况下,混合应用不会继承为主应用(基于 HTTP)配置的全局管道、拦截器、守卫和过滤器。要从主应用继承这些配置属性,需在 connectMicroservice() 调用的第二个参数(可选配置对象)中设置 inheritAppConfig 属性,如下所示: