NATS 协议定义了 NATS 服务器与 NATS 客户端之间的交互,它基于一套简单的命令集,这些命令是以纯文本消息的形式构成,并采用了发布/订阅模式。
一个简单的TCP客户端,如Telnet,可以使用这些协议命令与NATS服务器进行通信。
1. 协议约定
NATS 协议使用了一套约定来确保客户端和服务器都能理解彼此间共享的消息:
- 控制行及可选内容:客户端与 NATS 服务器之间的每一次通信都由一条命令消息组成,后面可能跟着一些可选的数据。只有 pub 和 msg 命令会携带负载数据与命令一起发送。
- 字段分隔符:命令中的不同参数和选项通过空格或制表符进行分隔。在命令中,连续的空白字符被视为单个分隔符。
- 换行符:NATS 使用换行字符序列(回车符 (CR) 和换行符 (LF))来标记协议消息的结束,以及在 PUB 或 MSG 协议消息中的消息负载的结束。
- 主题名称:在发布和订阅消息时使用的主题名称是区分大小写的,并且只能包含字母数字字符和
>
和.
和*
这三个特殊字符,不能包含空白字符,且不能为空。 - 字符编码: NATS 服务器支持 ASCII 字符编码用于主题名称,客户端应当遵循这一最佳实践。对于主题名称,无法保证支持非 ASCII 编码,如 UTF-8,即便在某些情况下可能会支持。
2. 协议消息
OP Name | Sent By | Description |
---|---|---|
INFO | Server | Sent to client after initial TCP/IP connection 服务器在接收到客户端的初始请求后,会向客户端发送这条消息。 |
CONNECT | Client | Sent to server to specify connection information 一旦连接建立后,客户端使用这个命令来指定额外的连接详情。 |
PUB | Client | Publish a message to a subject, with optional reply subject 向服务器发送一条消息,包含主题名称和一个可选的回复主题名称。 |
HPUB | Client | Publish a message to a subject including NATS headers, with optional reply subject |
SUB | Client | Subscribe to a subject (or subject wildcard) 订阅给定主题的 NATS 服务器。 |
UNSUB | Client | Unsubscribe (or auto-unsubscribe) from subject 取消对给定主题的兴趣并停止接收消息。 |
MSG | Server | Delivers a message payload to a subscriber 用于将消息发送给感兴趣的订阅者。 |
HMSG | Server | Delivers a message payload to a subscriber with NATS headers |
PING | Both | PING keep-alive message 这条消息用于保持客户端与服务器之间的连接活动。当一方发送这条消息时,另一方应该用 PONG 消息作为响应,以实现成功的保活连接。 |
PONG | Both | PONG keep-alive response 这是对 PING 消息的响应消息,用于保持连接活动。 |
+OK | Server | Acknowledges well-formed protocol message in verbose mode 这是服务器用来告知客户端之前发送的消息格式是正确的。这仅在详细模式下发送。 |
-ERR | Server | Indicates a protocol error. May cause client disconnect 这是服务器用来告知客户端发生了协议错误。 |
使用纯文本协议的一个好处是它也使得我们能够更容易地使用像 Telnet 这样的简单客户端手动与服务器交互,这是我们工作环境中都有的工具。
本文发表于 0001-01-01,最后修改于 0001-01-01。
本站永久域名「 jiavvc.top 」,也可搜索「 后浪笔记一零二四 」找到我。