mirror of
				https://github.com/taigrr/nats.docs
				synced 2025-01-18 04:03:23 -08:00 
			
		
		
		
	
		
			
				
	
	
		
			102 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			102 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
# Pausing Between Reconnect Attempts
 | 
						||
 | 
						||
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_](random.md) situation when additional servers are not available.
 | 
						||
 | 
						||
{% tabs %}
 | 
						||
{% tab title="Go" %}
 | 
						||
```go
 | 
						||
// Set reconnect interval to 10 seconds
 | 
						||
nc, 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
 | 
						||
```
 | 
						||
{% endtab %}
 | 
						||
 | 
						||
{% tab title="Java" %}
 | 
						||
```java
 | 
						||
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 connection
 | 
						||
 | 
						||
nc.close();
 | 
						||
```
 | 
						||
{% endtab %}
 | 
						||
 | 
						||
{% tab title="JavaScript" %}
 | 
						||
```javascript
 | 
						||
let nc = NATS.connect({
 | 
						||
    servers: ["nats://demo.nats.io:4222"]
 | 
						||
});
 | 
						||
```
 | 
						||
{% endtab %}
 | 
						||
 | 
						||
{% tab title="Python" %}
 | 
						||
```python
 | 
						||
nc = NATS()
 | 
						||
await nc.connect(
 | 
						||
   servers=["nats://demo.nats.io:4222"],
 | 
						||
   reconnect_time_wait=10,
 | 
						||
   )
 | 
						||
 | 
						||
# Do something with the connection
 | 
						||
 | 
						||
await nc.close()
 | 
						||
```
 | 
						||
{% endtab %}
 | 
						||
 | 
						||
{% tab title="Ruby" %}
 | 
						||
```ruby
 | 
						||
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.close
 | 
						||
end
 | 
						||
```
 | 
						||
{% endtab %}
 | 
						||
 | 
						||
{% tab title="TypeScript" %}
 | 
						||
```typescript
 | 
						||
// will throw an exception if connection fails
 | 
						||
let nc = await connect({
 | 
						||
    servers: ["nats://demo.nats.io:4222"]
 | 
						||
});
 | 
						||
nc.close();
 | 
						||
```
 | 
						||
{% endtab %}
 | 
						||
 | 
						||
{% tab title="C" %}
 | 
						||
```c
 | 
						||
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);
 | 
						||
```
 | 
						||
{% endtab %}
 | 
						||
{% endtabs %}
 | 
						||
 |