介绍
使用NATS进行开发是分布式应用程序技术,常见的NATS功能和特定于库的语法的结合。除了使用本书作为指导之外,某些库还包含其API语言熟悉的格式。例如,Go库具有godoc,而Java库具有javadoc。
Library | Doc Link |
---|---|
nats.go | godoc |
nats.java | javadoc |
nats.net | doxygen |
nats.rb | yard |
nats.ts | ts-doc |
并非所有库都包含此单独的文档,具体取决于语言社区,但是请确保查阅客户端库README文件以了解更多信息。
连接中
NATS系统通常由带有nats
或 tls
协议的标准URL标识,例如nats://demo.nats.io。NATS系统可以是单个服务器,小型集群或全局超级集群。在所有这些示例中,我们将依赖于 nats.io提供的单个测试服务器,该服务器位于nats://demo.nats.io
, 4222
是NATS的默认端口。
NATS还支持通过tls协议使用TLS的安全连接。大多数客户端都支持使用URL协议tls自动检测安全连接。 tls://demo.nats.io:4443上还有一个运行TLS的演示服务器。 对于许多客户端库,该协议要求已成为可选要求,因此您可以使用demo.nats.io:4222作为URL,并让客户端和服务器确定是否需要TLS。
NATS连接有很多选项,从超时到重新连接设置。
连接到默认服务器
一些库还提供了一种特殊的方法来连接到默认 URL,通常是: nats://localhost:4222
nc, err := nats.Connect(nats.DefaultURL)\
if err != nil {
log.Fatal(err)
}
defer nc.Close()
// Do something with the connection
连接到特定服务器
NATS客户端库可以采用完整的URL nats://demo.nats.io:4222,以指定要连接的特定服务器主机和端口。
库正在删除对显式协议的要求,并且可能允许demo.nats.io:4222或仅允许demo.nats.io。 在后面的示例中,将使用默认端口4222。 请查阅您特定的客户端库的文档,以了解支持哪些URL格式。
例如,要使用URL连接到演示服务器,可以使用:
// If connecting to the default port, the URL can be simplified
// to just the hostname/IP.
// That is, the connect below is equivalent to:
// nats.Connect("nats://demo.nats.io:4222")
nc, err := nats.Connect("demo.nats.io")
if err != nil {
log.Fatal(err)
}
defer nc.Close()
// Do something with the connectioConnection nc = Nats.connect("nats://demo.nats.io:4222");
连接到集群
连接到集群时,需要考虑一些事项。
-为每个集群成员传递URL(半可选)
-连接算法
-重新连接算法(稍后讨论)
-服务器提供的URL
客户端库首次尝试连接时,它将使用提供给连接选项或功能的URL列表。通常以随机顺序检查这些URL,以确保没有每个客户端都连接到同一服务器。使用第一个成功的连接。可以明确禁用随机化。
客户端连接到服务器后,服务器可以提供其他已知服务器的URL列表。这样,客户端可以连接到一台服务器,并且在重新连接期间仍然可以使用其他服务器。
为了确保初始连接,您的代码应包括合理的前线服务器或种子服务器列表。这些服务器可能知道群集的其他成员,并且可能将这些成员告诉客户端。但是您不必配置客户端以在connect方法中传递集群的每个有效成员。
通过提供传递多个连接选项的功能,NATS可以处理计算机宕机或客户端不可用的可能性。通过增加服务器向客户端提供已知服务器列表的功能,作为客户端服务器协议的一部分,群集创建的网格可以在客户端运行时自然地增长和变化。
注意,失败行为取决于库,请查看客户端库的文档以获取有关如果连接失败会发生的情况的信息。
servers := []string{"nats://127.0.0.1:1222", "nats://127.0.0.1:1223", "nats://127.0.0.1:1224"}
nc, err := nats.Connect(strings.Join(servers, ","))
if er