阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

NATS连线协议详解

161次阅读
没有评论

共计 1920 个字符,预计需要花费 5 分钟才能阅读完成。

NATS 的连线协议是一个简单的、基于文本的发布 / 订阅风格的协议。客户端连接到 gnatsd(NATS 服务器),并与 gnatsd 进行通信,通信基于普通的 TCP/IP 套接字,并定义了很小的操作集,换行表示终止。
与传统的、使用了二进制消息格式的消息通信系统不同,使用了基于文本的 NATS 协议,使得客户端实现很简单,可以方便地选择多种编程语言或脚本语言来实现。

9、NATS 协议约定

  • 主题名(Subject Name)
    主题名包括响应主题(收件箱)名,是大小写敏感的,必须是非空字符串,不能包含空格,可以在字符串中使用“.”符号,比如:
    FOO、BAR、foo.bar、foo.BAR、FOO.BAR、FOO.BAR.BAZ 这些都是有效的主题名。
  • 通配符
    NATS 支持在主题订阅中使用“*”通配符。
    星号“*”匹配主题的任意级别的任意字符。
    大于号“>”匹配后面的任意字符。比如 foo.> 匹配 foo.bar 和 foo.bar.baz.1,但不匹配 foo
    通配符必须被标识分隔。比如 foo..baz 和 foo.> 都是有效的,而 foo.bar、f*o.b* r 和 foo> 都是无效的。
  • 域分隔符
    NATS 协议消息的域使用空格符或 \t 进行分隔。多个空格会被视为一个空格。
  • 新行
    与那些基于文本的协议一样,NATS 使用 CR+LF(也即 \r\n,0X0D0A)作为协议消息的终止。新行还用于标记在 PUB 或 MSG 协议消息的实际有效负载。

10、NATS 协议消息

下面的表格描述了 NATS 协议消息,要注意操作名是大小写不敏感的,因此 SUB foo 1\r\n 和 sub foo 1\r\n 是等价的。

——————————————————————————————————
操作名   |   发送端   |   描述
——————————————————————————————————
INFO         服务器       初始化 TCP/IP 连接后发送给客户端
CONNECT      客户端       发送给服务器指定连接信息
PUB          客户端       发布消息到主题或 Reply 主题
SUB          客户端       订阅主题(或主题通配符)UNSUB        客户端       取消订阅主题(或自动取消订阅)MSG          服务器       交付一条消息负载给订阅者
PING         两端         保持连接有效的 PING 活跃消息
PONG         两端         保持连接有效的 PONG 活跃消息
+OK          服务器       确认详细(Verbose)模式下协议消息的合法
-ERR         服务器       指示协议错误,会导致客户端断开连接
——————————————————————————————————

11、NATS 协议消息的例子

下面砍使用 Telnet 连接 demo.nats.io 站点的例子:

telnet demo.nats.io 4222

Trying 107.170.221.32...
Connected to demo.nats.io.
Escape character is '^]'.
INFO {"server_id":"1ec445b504f4edfb4cf7927c707dd717","version":"0.6.6","go":"go1.4.2","host":"0.0.0.0","port":4222,"auth_required":false,"ssl_required":false,"max_payload":1048576}

CONNECT

语法 CONNECT {[“option_name”:option_value],…}
有效的选项如下:

  • verbose 打开 +OK 协议确认
  • pedantic:打开附带的严格格式检查,比如正确的主题名
  • ssl_required:指示客户端是否需要 SSL 连接
  • auth_token:客户端授权令牌
  • user:连接的用户名(如果设置了 auth_required)
  • pass:连接的密码(如果设置了 auth_required)
  • name:客户端名(可选项)
  • lang:客户端的实现语言
  • version:客户端的版本

描述:
CONNECT 消息与 INFO 消息相似,一旦客户端与 NATS 服务器建立了 TCP/IP 套接字连接,且服务器接收到 INFO 消息,客户端还可以发送 CONNECT 消息到 NATS 服务器,以便提供关于当前连接的更详细的信息和安全信息。

例子:下面是来自 Golang 客户端的一个例子:

CONNECT {"verbose":false,"pedantic":false,"ssl_required":false,"name":"","lang":"go","version":"1.1.0"}\r\n

大多数客户端都设置了 Verbose 模式为 false(缺省设置),这意味着服务器在接收到消息后不会发送 +OK 消息给客户端。

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2016-10/136415.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计1920字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中