NATS发布/订阅机制 【消息中间件】

3 篇文章 0 订阅
1 篇文章 0 订阅

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在任何活动的订阅者都会收到该消息.

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
非常感谢您的问题。关于您的问题,我可以为您提供一些信息和建议,但是我需要更多的上下文和细节,以便更好地理解您的需求。 首先,发布/订阅模式是一种常见的软件设计模式,用于在多个应用程序之间传递消息和通信。在这种模式中,有一个或多个发布者将消息发布到一个或多个主题,然后订阅者通过订阅特定主题来接收相关消息。这种模式通常用于异步和松散耦合的应用程序之间的通信。 针对您的问题,如果您想使用Lua语言搭建一个发布/订阅模式框架,您可以考虑使用LuaSocket库或LuaNATS库。 LuaSocket是一个Lua语言的网络支持库,它提供了Socket API的实现,并支持TCP和UDP协议。您可以使用它来实现发布/订阅模式的网络通信。具体来说,您可以使用Socket API中的socket()函数创建一个TCP或UDP套接字,然后使用bind()函数将套接字绑定到本地端口,再使用send()函数向主题发布消息,最后使用recv()函数从主题订阅消息。 而LuaNATS是一个Lua语言的NATS客户端库,它提供了对NATS协议的实现,可以方便地实现基于NATS的发布/订阅模式通信。具体来说,您可以使用LuaNATS提供的API创建一个连接到NATS服务器的客户端,并在客户端上订阅/取消订阅主题,然后通过客户端发送和接收主题消息。 除了这些库之外,还有许多其他的Lua语言库可以用于实现发布/订阅模式框架,具体选择取决于您的实际需求和环境。 希望这些信息和建议能为您提供一些帮助。如果您有任何其他问题或需要更多帮助,请随时问我。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值