其他功能

本节包含 connect 的其他功能和选项。

获取最大有效负载大小

虽然客户端无法控制服务端的最大有效负载大小,但客户端可以在连接建立后提供一种方式,让应用程序获取服务器上已配置的 max_payloadarrow-up-right。这将允许应用程序根据需要对数据进行分块或限制,以被服务器接受。

nc, err := nats.Connect("demo.nats.io")
if err != nil {
    log.Fatal(err)
}
defer nc.Close()

mp := nc.MaxPayload()
log.Printf("最大有效负载为 %v 字节", mp)

// 根据最大有效负载进行操作

启用严格模式

NATS 服务器提供了一个 pedantic(严格)模式,可以对协议执行额外的检查。

例如,如果用于发布消息的主题中包含 通配符,服务器不会将其作为通配符使用,因此会省略此检查。

默认情况下,此设置处于关闭状态,但您可以启用它来测试您的应用程序:

设置最大控制行大小

客户端与服务器之间的协议相当简单,依赖于一条控制行,有时还有一条消息体。控制行包含发送的操作,如 PING 或 PONG,后面跟着回车换行符(CRLF 或 "\r\n")。服务器有一个 max_control_linearrow-up-right 选项,可以限制控制行的最大大小。对于 PING 和 PONG 操作,这没啥用,但对于包含主题名称和可能队列组名称的消息,控制行长度可能很重要,因为它实际上限制了可能组合的长度。一些客户端会在内部尝试限制控制行大小,以防止服务器返回错误。这些客户端可能会允许您设置使用的大小,也可能不允许,但如果允许,大小应与服务器配置匹配。

不建议将此值设置为高于其他客户端或 nats-server 的值。

例如,将最大控制行大小设置为 2k:

开启/关闭详细模式

客户端可以从 NATS 服务器请求 verbose 模式。当客户端发出请求时,服务器将以 +OK 或 -ERR 错误回复该客户端的每条消息。然而,客户端不会阻塞并等待响应。即使不使用详细模式,错误也会被发送,客户端库也会按照文档中说明的方式处理它们。

此功能仅用于调试客户端库或 nats-server 自身。默认情况下,服务器会将其设置为开启,但每个客户端都会将其关闭。

要开启详细模式:

最后更新于