首页 > 其他分享 >NATS—协议详解(nats-protocol)

NATS—协议详解(nats-protocol)

时间:2023-06-06 18:55:41浏览次数:53  
标签:协议 protocol NATS nats 消息 服务器 foo 客户端

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

 NATS协议约定

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

 NATS协议消息

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

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

注意:pub 操作只能针对具体的某个topic(收件箱),不能使用通配置符!

NATS协议消息的例子

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

1 2 3 4 5 6 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,"

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服务器,以便提供关于当前连接的更详细的信息和安全信息。

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

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

转自:http://www.cnblogs.com/liang1101/p/6641348.html

标签:协议,protocol,NATS,nats,消息,服务器,foo,客户端
From: https://www.cnblogs.com/jiftle/p/17461445.html

相关文章

  • HTTP HyperText Transfer Protocol 超文本传输协议
    http是在TCP上层的应用协议,基础协议到TCP/UDP就结束了,剩下的是应用协议。应用协议都是在TCP/UDPpayload中,根据需求制定的标准。请求请求包括:请求行(requestline)、请求头部(header)、空行和请求数据四个部分组成。请求有多种方法,比如我们常见的GET,POST等。响应响应包括:状态......
  • rabbitmq:pika.exceptions.IncompatibleProtocolError: StreamLostError: ('Transport
    本地连接rabbitmq出现这个问题: 是因为我把port写成了15672,改成5672即可 ......
  • 浅谈Protocol Buffers、GRPC、Buf、GRPC-Gateway
    1.ProtocolBuffers什么是proto?ProtocolBuffers如何理解ProtocolBuffers?协议缓冲区非proto协议如何订立、传播以及维护?如何理解协议缓冲区?Protocolbuffers提供了一种语言中立、平台中立、可扩展的机制,用于以向前兼容和向后兼容的方式序列化结构化数据。它......
  • 【解决方法】解决锐捷EVE模拟器无法弹出选择CRT接管命令行和命令行,提示:此站点正在尝试
    环境:工具:锐捷EVE模拟器,火狐游览器(Firefox)远程工具:SecureCRT系统版本:Windows10问题描述:描述:在Edge游览器和360游览器中,启动路由器等设备无法启动命令行和CRT,弹出框中无反应。如下图:解释:游览器不兼容,安装火狐游览器即可。解决方法:1.下载火狐游览器:https://www.firefo......
  • IP protocol
    SOME/IP:Scalabeservice-OrientedMidelewareoverIP,IP-basedextensibleservice-orientedmiddleware.IntheprotocolarchitectureofEthernetinvehicles,SOME/IPisintheapplicationlayer,Providesaservice-orientedcommunicationinterface.Thecommu......
  • IPv4 Internet Protocol version 4 协议解析
    协议头|00|01|02|03|04|05|06|07|08|09|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32||Version|IHL|DSCP|ECN|TotalLength||Identification|......
  • SNMP(Simple Network Management Protocol)——简单网络管理协议
    SNMP(SimpleNetworkManagementProtocol)——简单网络管理协议 目录一、SNMP简介1.背景2.SNMP管理的网络架构二、SNMPMIB1.SNMPMIB简介2.MIB分类(1)公有MIB(2)私有MIB3.被管理设备的基本属性(1)对象表示符(2)对象的状态(3)对象的访问权限(4)对象的数据类型三、SNMPv1工作......
  • [已解决] 记录一次排查错误Invalid character found in the HTTP protocol
    环境Tomcat8.x报错InvalidcharacterfoundintheHTTPprotocol[HTTP/1.1Connection:]分析查看localhost_access_log.txt发现:HEAD/400都是HEAD请求,且返回都是400,毕竟HTTP协议的字符不正确。调研Howtosolve"InvalidcharacterfoundintheHTTPprotocol[......
  • 20 An identity-based data aggregation protocol for the smart grid
    ......
  • 计网学习笔记七 IP protocol basic
    在这一节讲了IP协议的基本内容:包括IPv4提供的操作、数据报在IPv4下是怎么样的结构、数据报是怎样切片发送的、IPv4的编址方式有什么……IPv6在下一节讲网络层协议簇时细讲。IPv4协议的具体定义:RFC791Internet的地址分类按地址层级:物理上的网络地址:区分物理接口,同一个......