NATS的作用
NATS消息传递支持在计算机应用程序和服务之间交换分段为消息的数据。这些消息由主题解决,不依赖于网络位置。这在应用程序或服务与底层物理网络之间提供了一个抽象层。数据被编码并构成消息并由发布者发送。该消息由一个或多个订户接收,解码和处理。
NATS通过其核心通信机制,发布和订阅支持这种模式。对具有回复主题的给定主题发布请求,并且响应者听取该主题并将回复发送给回复主题。
客户端通常通过单个URL连接到NATS系统,然后订阅或发布消息给主题。
NATS核心提供最多一次的服务质量。如果订户没有收听主题(没有主题匹配),或者在发送消息时未激活,则不会收到消息。
从根本上说,NATS是关于发布和收听消息的。这两者都严重依赖于将消息范围限定为流或主题的主题。最简单的是,主题只是一串字符,形成了发布者和订阅者可以用来互相查找的名称。
客户端连接到gnatsd(NATS服务器),并与gnatsd进行通信,
NATS的使用
1. 在本地环境安装并运行NATS Streaming服务器(nats-streaming-server)
% brew install nats-streaming-server // 安装
% nats-streaming-server // 启动,默认端口是4222
连接成功的打印如下:
2. nats包含了多语言的客户端, 在C#客户端配置如下
3. 前端,angular框架安装signalR库与后端进行双向通讯。
如上图所示,后端的NatsPublish()方法通过url连接了nats server,在前端可通过signalR的invoke()调用NatsPublish()方法,即:
async publishNATS(subject: string, content: string, isJsonParse: boolean) {
let toSend = isJsonParse ? content : JSON.parse(content);
await this.debugSignalRService.debugSignalRConnection.invoke(
'NatsPublish',
subject,
toSend
);
}
首先要先订阅,先订阅的发布才有意义。
NATS将publish/subscribe消息分发模型实现为一对多通信,发布者在Subject上发送消息,并且监听该Subject在任何活动的订阅者都会收到该消息.