设置连接超时时间
每个库都有其特定的语言方式来传入连接选项。其中最常见的选项之一是连接超时时间,它限制了与服务器建立连接所需的最大时间。如果提供了多个URL,此超时时间将分别应用于每个集群成员。要将连接到服务器的最长时间设置为10秒:
{% tabs %}
{% tab title="Go" %}
nc, err := nats.Connect("demo.nats.io", nats.Name("API Options Example"), nats.Timeout(10*time.Second))
if err != nil {
log.Fatal(err)
}
defer nc.Close()
// 使用连接做点事情
{% endtab %}
{% tab title="Java" %}
Options options = new Options.Builder()
.server("nats://demo.nats.io:4222")
.connectionTimeout(Duration.ofSeconds(10)) // 设置超时时间
.build();
Connection nc = Nats.connect(options);
// 使用连接做点事情
nc.close();
{% endtab %}
{% tab title="JavaScript" %}
const nc = await connect({
reconnectTimeWait: 10 * 1000, // 10秒
servers: ["demo.nats.io"],
});
{% endtab %}
{% tab title="Python" %}
nc = NATS()
await nc.connect(
servers=["nats://demo.nats.io:4222"],
connect_timeout=10)
# 使用连接做点事情
await nc.close()
{% endtab %}
{% tab title="C#" %}
// dotnet add package NATS.Net
using NATS.Net;
using NATS.Client.Core;
await using var client = new NatsClient(new NatsOpts
{
Url = "nats://demo.nats.io:4222",
ConnectTimeout = TimeSpan.FromSeconds(10)
});
// 不需要显式调用 ConnectAsync(),首次操作会自动建立连接。
await client.ConnectAsync();
{% endtab %}
{% tab title="Ruby" %}
# 当前 Ruby NATS 客户端 API 中没有连接超时功能,但可以使用计时器来模拟。
require 'nats/client'
timer = EM.add_timer(10) do
NATS.connect do |nc|
# 使用连接做点事情
# 关闭连接
nc.close
end
end
EM.cancel_timer(timer)
{% endtab %}
{% tab title="C" %}
nnatsConnection *conn = NULL;
natsOptions *opts = NULL;
natsStatus s = NATS_OK;
s = natsOptions_Create(&opts);
if (s == NATS_OK)
// 将超时时间设置为10秒(10,000毫秒)
s = natsOptions_SetTimeout(opts, 10000);
if (s == NATS_OK)
s = natsConnection_Connect(&conn, opts);
(...)
// 销毁创建的对象
natsConnection_Destroy(conn);
natsOptions_Destroy(opts);
{% endtab %}
{% endtabs %}