NATS¶
NATS是一个简单、安全、高性能的开源消息传递系统,适用于云本地应用、物联网消息传递和微服务架构。 NATS 服务器是用 Go 编程语言编写的,但与服务器交互的客户端库可用于数十种主要的编程语言。 NATS 支持 At Most Once**和**At Least Once 交付。 它可以在任何地方运行,从大型服务器和云实例,到边缘网关,甚至是物联网设备。
安装¶
要开始构建基于 NATS 的微服务,首先要安装所需的包:
概述¶
要使用 NATS 传输器,将以下选项对象传递给createMicroservice()
方法:
Hint
Transport
枚举是从@nestjs/microservices
包导入的。
选项¶
options
对象特定于所选的传输器。
NATS 传输器公开了此处所描述的属性.
此外,有一个queue
属性,它允许你指定你的服务器应该订阅的队列的名称(保留undefined
忽略这个设置)。
阅读下面关于 NATS 队列组的更多信息
客户端¶
与其他微服务传输器一样,创建 NATS ClientProxy
实例有几个选项。
创建实例的一种方法是使用ClientsModule
。
要使用ClientsModule
创建一个客户端实例,请导入它并使用register()
方法传递一个选项对象,该对象具有上面createMicroservice()
方法中显示的相同属性,以及一个name
属性,用于作为注入令牌。
点击这里阅读更多关于“ClientsModule”的信息
也可以使用其他创建客户端的选项(ClientProxyFactory
或@Client()
)。
你可以在这里阅读。
请求-响应¶
对于 请求-响应 消息样式(阅读更多),NATS 传输器不使用 NATS 内置的请求-应答机制。
相反,使用publish()
方法在给定的主题上发布一个“请求”,该方法具有惟一的应答主题名称,应答者监听该主题并向应答主题发送响应。
回复主题被动态地定向回请求者,而不管任何一方的位置。
基于事件的¶
对于 基于事件的 消息样式(阅读更多), NATS 传输器使用 NATS 内置的发布-订阅机制。 发布者发送关于主题的消息,任何监听该主题的活动订阅者都会接收该消息。 订阅者还可以注册对通配符主题的兴趣,它的工作方式有点像正则表达式。 这种一对多模式有时称为扇出。
队列组¶
NATS 提供了一个称为分布式队列的内置负载平衡特性。
要创建队列订阅,使用 queue
属性如下所示:
main.ts | |
---|---|
上下文¶
在更复杂的场景中,您可能希望访问关于传入请求的更多信息。
当使用 NATS 传输器时,您可以访问 NatsContext
对象。
Hint
@Payload()
, @Ctx()
和 NatsContext
是从 @nestjs/microservices
包导入的。
通配符¶
订阅可以是对显式主题的订阅,也可以包括通配符。
记录构建¶
要配置消息选项,可以使用 NatsRecordBuilder
类(注意:这对基于事件的流也是可行的)。
例如,要添加 x-version
标头,使用 setHeaders
方法,如下所示:
Hint
NatsRecordBuilder
类从 @nestjs/microservices
包中导出。
你也可以在服务器端读取这些头文件,通过访问 NatsContext
,如下所示:
在某些情况下,你可能想为多个请求配置头信息,你可以将这些信息作为选项传递给 ClientProxyFactory
: