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 creatednatsConnection_Destroy(conn);natsOptions_Destroy(opts);