使用NATS及其nats.c客户端简单示例用法(nats.c的API接口)

      最后更新:2022-08-01 07:45:59 手机定位技术交流文章

      NATS

        • 前言
          • 什么是NATS
          • NATS客户端应用
          • NATS服务基础设施
          • 连接NATS客户端应用程序到NATS服务器
          • 简单的消息传递设计
        • NATS客户端
        • 安装
        • 开始
          • 基本用法
          • 喷气流基本使用
          • JetStream基本管理
          • 关键价值管理
          • KeyValue API
          • Headers
        • NATS-SERVER
        • nats.c 简单的客户端测试例

      前言

      什么是NATS

      首先,让我们首先了解NTS是什么。NTS是一个开源、轻量、高性能的分布式消息中间体。它主要基于Go语言的开发,是一种简单,一种安全高效的通讯系统,适用于数字系统,服务和设备。NATS是云原生计算基金会(CNCF)的一部分。NATS已实现超过40种客户端语言,它的服务器可以本地化,云中,边缘甚至在 Raspberry Pi 上运行.NATS可以保护和简化现代分布式系统的设计和操作.它支持发布订阅、请求响应、队列订阅等消息传递模型。功能包括发布订阅模型、服务器集群、自动订阅者、基于文本协议等。

      NATS客户端应用

      开发人员在应用程序代码中使用一个纳塔斯客户端库(纳塔斯客户端在许多语言中写成,你可以根据你的需要选择其中一个操作),允许它们在应用程序实例之间或完全独立应用程序之间发布、订阅、请求和答复。这些应用程序通常在这个手册中称为“客户端应用程序”。他们有时被称为“客户”(因为从NATS服务器的角度来看,他们是客户)。

      NATS服务基础设施

      NATS服务由一个或多个NATS服务器进程提供,这些过程配置为相互连接并提供NASTS服务基础设施。NATS服务基础设施可以在端口设备上运行的单个NATS服务器进程中运行(nats服务器进程小于20MB! )已经扩展到由多个集群组成的公共全球超级群,这些集群涵盖全球所有主要的云供应商和所有地区,NGS(Synadia's NGS)。

      连接NATS客户端应用程序到NATS服务器

      若要连接NATS客户端应用程序到NATS服务,然后订阅或发布一个主题的消息,只需配置它:

      1.网站:一个“NATS URL”字符串(使用URL格式),该字符串指定由NAS服务器访问的IP地址和端口,以及建立的连接类型(仅为TCP、TLS或Websocket)。

      2.身份验证(如果需要):通过NAS服务器验证应用程序的细节,以识别它。 NATS支持多个身份验证方案(用户名/密码、分散 JWT、许可证、TLS证书和Nkey与查询)。

      简单的消息传递设计

      NATS允许应用程序通过发送和接收消息进行易于通信,这些消息由主题字符串来地址和识别,并且不依赖于网络位置。

      数据被编码和帧为消息,由出版商发送。 消息由一个或多个订阅者接收、解码和处理。
      在这里插入图片描述
      通过这个简单的设计,NATS允许程序共享共同的消息处理代码,分离资源和相互依赖关系,并通过增加可轻松处理的信息量(服务请求或流量数据)来扩展。

      以上资料是NATS的官方文件,如果您有兴趣,可浏览官方资料

      NATS客户端

      这里主要是基于在Linux中使用nats.c客户端的用法,如想查看其他语言的客户端用法,可通过该 https://github.com/nats-io 进行查看。

      安装

      首先,我们用下面的命令从Linux下载源代码

      或使用 https://github."Com/nats-io/nats".c下载

      一旦下载,我们可以直接进入nats。 在c目录中,使用命令cd nats.c

      然后再使用命令mkdir build创建建模目录,然后将其添加到建模目录,然后执行cmake命令..

      开始

      在这个目录中,目录有一系列简单的例子,它们完全有功能,但非常简单。 目的是展示API的易用性。 加入nats。 进入c目录后,用命令添加到该目录cd examples/getstarted然后你可以看到里面的文件,这些是一些简单的例子文件。
      在这里插入图片描述

      目录中有一组更复杂的示例,也可用于对客户端库进行基准测试。在 examples/ 目录里
      在这里插入图片描述

      基本用法

      喷气流基本使用

      JetStream基本管理

      关键价值管理

      如何创建一个关键值存储的例子:

      KeyValue API

      下面是如何输入给定键的值:

      以下是如何获得钥匙:

      下面是如何清除钥匙:

      为指定的键创建“观察程序”,做下列操作:

      获取关键历史记录:

      kvEntryList l;
      int i;

      //列表在堆栈中定义,并通过此调用将被初始化/更新:

      以下是如何将桶钥匙储存的方法:

      Headers

      在2.2.0+版本中,当连接到服务器时,头条是可用的。

      它们与http头条非常相似,它们是键/值对的映射,而值是字符串集合。

      标题允许用户添加消息的元信息,但不会干预消息的负载。

      请注意,如果应用程序尝试在连接到不理解标头的服务器时发送带有标头的消息, 则发布调用将返回错误。NATS_NO_SERVER_SUPPORT

      有一个API来知道当前连接的服务器是否支持头条:

      natsStatus s = natsConnection_HasHeaderSupport(conn); if (s ==
      NATS_NO_SERVER_SUPPORT)
      //处理服务器不支持此功能。如果服务器理解标题,但是你正要把消息传给一个不了解标题的客户, 则标头将被剥离,这样,老客户仍能收到消息。如果应用程序取决于标题,重要的是将所有客户端和服务器设置为支持标题的版本。

      更多详情可前往 https://github.com/nats-io/nats.c#nats-client 下面进行查看。
      更多API接口可前往文档 http://nats-io.github.io/nats.c/ 查看

      接下来我们可以测试一些简单的客户端程序来查看执行效果,但是再测试之前,我们必须安装 nats-server,它必须在测试 nats服务器之前启动。

      NATS-SERVER

      让我们先下载一个nats服务器,并且可以直接使用,可以去到 https://github.com/nats-io/nats-server/releases/tag/v2.8.4 进行下载。
      在这里插入图片描述
      下载后,解凍它,然后将其添加到目录中,然后传递命令./nats-server直接执行nats服务器.
      在这里插入图片描述
      也可以使用命令./nats-server -D -P 4222监听服务器
      在这里插入图片描述

      nats.c 简单的客户端测试例

      我们进入到getstarted目录里,以下是asyncsub.c源码

      执行该文件,该可执行文件再我们之前cmake …的那个目录里,因为我之前是再build目录里进行创建的,所以我的那些可执行文件都在这些这个目录里
      在这里插入图片描述
      以下是pubstr.c文件

      为了执行该文件, asyncsub客户端可以接收由pubstr客户端发送的消息。
      在这里插入图片描述

      以上只是一个简单的示例,还有其他简单的示例,以及还有其他较为复杂的示例在examples目录里,感兴趣的可以去了解一下里面的源码及其工作原理,可以根据API接口文档进行查看。

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/31094.html

          热门文章

          文章分类