It doesn’t make much sense to try to connect to the same server over and over. To prevent this sort of thrashing, and wasted reconnect attempts, especially when using TLS, libraries provide a wait setting. Generally clients make sure that between two reconnect attempts to the same server at least a certain amount of time has passed. The concrete implementation depends on the library used.
This setting not only prevents wasting client resources, it also alleviates a thundering herd situation when additional servers are not available.
// Set reconnect interval to 10 secondsnc, err := nats.Connect("demo.nats.io", nats.ReconnectWait(10*time.Second))if err !=nil { log.Fatal(err)}defer nc.Close()// Do something with the connection
Options options =new Options.Builder().server("nats://demo.nats.io:4222").reconnectWait(Duration.ofSeconds(10)) // Set Reconnect Wait.build();Connection nc =Nats.connect(options);// Do something with the connectionnc.close();
nc =NATS()await nc.connect( servers=["nats://demo.nats.io:4222"], reconnect_time_wait=10, )# Do something with the connectionawait nc.close()
// dotnet add package NATS.NetusingNATS.Net;usingNATS.Client.Core;awaitusingvar client =newNatsClient(newNatsOpts{ Url ="nats://127.0.0.1:1222,nats://127.0.0.1:1223,nats://127.0.0.1:1224", // Set reconnect interval to between 5-10 seconds ReconnectWaitMin =TimeSpan.FromSeconds(5), ReconnectWaitMax =TimeSpan.FromSeconds(10),});
require'nats/client'NATS.start(servers: ["nats://127.0.0.1:1222","nats://127.0.0.1:1223","nats://127.0.0.1:1224"],reconnect_time_wait:10) do|nc|# Do something with the connection# Close the connection nc.closeend
natsConnection *conn = NULL;
natsOptions *opts = NULL;
natsStatus s = NATS_OK;
s = natsOptions_Create(&opts);
if (s == NATS_OK)
// Set reconnect interval to 10 seconds (10,000 milliseconds)
s = natsOptions_SetReconnectWait(opts, 10000);
if (s == NATS_OK)
s = natsConnection_Connect(&conn, opts);
(...)
// Destroy objects that were created
natsConnection_Destroy(conn);
natsOptions_Destroy(opts);