博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NATS连线协议详解
阅读量:6388 次
发布时间:2019-06-23

本文共 2226 字,大约阅读时间需要 7 分钟。

版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/50997449

NATS连线协议详解

作者:chszs,未经博主允许不得转载。经许可的转载需注明作者和博客主页:

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 4222Trying 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消息给客户端。

你可能感兴趣的文章
Nagios的搭建
查看>>
我的友情链接
查看>>
Oracle SQL之--多表查询基础用法
查看>>
图形化插件对Eclipse的版本要求
查看>>
两个关于数列的Python脚本(斐波那契数列和猴子吃香蕉类问题)
查看>>
olabuy-时光从来素默,内心应保持一份素淡与简静
查看>>
Spring Batch Bean 校验 API 支持
查看>>
kux文件怎么打开 苹果手机如何观看kux视频
查看>>
Python中的urllib.request模块
查看>>
第九课 《说人话》
查看>>
js对象数组排序
查看>>
如何实现在展示商品时,放大商品细节
查看>>
uboot boot流程分析
查看>>
如何学习PHP整个体系的?
查看>>
css三角形实现写法全攻略收集
查看>>
Enterprise and the press public MBT Fora
查看>>
js常用代码整理
查看>>
富文本编辑器TinyMCE
查看>>
01_vue实例_数据_方法
查看>>
“穿越”——正则表达式
查看>>