mirror of
https://github.com/postmannen/ctrl.git
synced 2025-03-15 10:57:42 +00:00
Added connection timeouts
This commit is contained in:
parent
b02a84f6cc
commit
6399cc427d
2 changed files with 16 additions and 1 deletions
|
@ -31,6 +31,8 @@ type Configuration struct {
|
||||||
NodeName string
|
NodeName string
|
||||||
// the address of the message broker
|
// the address of the message broker
|
||||||
BrokerAddress string
|
BrokerAddress string
|
||||||
|
// NatsConnOptTimeout the timeout for trying the connect to nats broker
|
||||||
|
NatsConnOptTimeout int
|
||||||
// nats connect retry
|
// nats connect retry
|
||||||
NatsConnectRetryInterval int
|
NatsConnectRetryInterval int
|
||||||
// NatsReconnectJitter in milliseconds
|
// NatsReconnectJitter in milliseconds
|
||||||
|
@ -110,6 +112,7 @@ type ConfigurationFromFile struct {
|
||||||
DatabaseFolder *string
|
DatabaseFolder *string
|
||||||
NodeName *string
|
NodeName *string
|
||||||
BrokerAddress *string
|
BrokerAddress *string
|
||||||
|
NatsConnOptTimeout *int
|
||||||
NatsConnectRetryInterval *int
|
NatsConnectRetryInterval *int
|
||||||
NatsReconnectJitter *int
|
NatsReconnectJitter *int
|
||||||
NatsReconnectJitterTLS *int
|
NatsReconnectJitterTLS *int
|
||||||
|
@ -157,6 +160,7 @@ func newConfigurationDefaults() Configuration {
|
||||||
HTTPListener: "",
|
HTTPListener: "",
|
||||||
DatabaseFolder: "./var/lib",
|
DatabaseFolder: "./var/lib",
|
||||||
BrokerAddress: "127.0.0.1:4222",
|
BrokerAddress: "127.0.0.1:4222",
|
||||||
|
NatsConnOptTimeout: 20,
|
||||||
NatsConnectRetryInterval: 10,
|
NatsConnectRetryInterval: 10,
|
||||||
NatsReconnectJitter: 100,
|
NatsReconnectJitter: 100,
|
||||||
NatsReconnectJitterTLS: 1,
|
NatsReconnectJitterTLS: 1,
|
||||||
|
@ -233,6 +237,11 @@ func checkConfigValues(cf ConfigurationFromFile) Configuration {
|
||||||
} else {
|
} else {
|
||||||
conf.BrokerAddress = *cf.BrokerAddress
|
conf.BrokerAddress = *cf.BrokerAddress
|
||||||
}
|
}
|
||||||
|
if cf.NatsConnOptTimeout == nil {
|
||||||
|
conf.NatsConnOptTimeout = cd.NatsConnOptTimeout
|
||||||
|
} else {
|
||||||
|
conf.NatsConnOptTimeout = *cf.NatsConnOptTimeout
|
||||||
|
}
|
||||||
if cf.NatsConnectRetryInterval == nil {
|
if cf.NatsConnectRetryInterval == nil {
|
||||||
conf.NatsConnectRetryInterval = cd.NatsConnectRetryInterval
|
conf.NatsConnectRetryInterval = cd.NatsConnectRetryInterval
|
||||||
} else {
|
} else {
|
||||||
|
@ -422,6 +431,7 @@ func (c *Configuration) CheckFlags() error {
|
||||||
flag.StringVar(&c.DatabaseFolder, "databaseFolder", fc.DatabaseFolder, "folder who contains the database file. Defaults to ./var/lib/. If other folder is used this flag must be specified at startup.")
|
flag.StringVar(&c.DatabaseFolder, "databaseFolder", fc.DatabaseFolder, "folder who contains the database file. Defaults to ./var/lib/. If other folder is used this flag must be specified at startup.")
|
||||||
flag.StringVar(&c.NodeName, "nodeName", fc.NodeName, "some unique string to identify this Edge unit")
|
flag.StringVar(&c.NodeName, "nodeName", fc.NodeName, "some unique string to identify this Edge unit")
|
||||||
flag.StringVar(&c.BrokerAddress, "brokerAddress", fc.BrokerAddress, "the address of the message broker")
|
flag.StringVar(&c.BrokerAddress, "brokerAddress", fc.BrokerAddress, "the address of the message broker")
|
||||||
|
flag.IntVar(&c.NatsConnOptTimeout, "natsConnOptTimeout", fc.NatsConnOptTimeout, "default nats client conn timeout")
|
||||||
flag.IntVar(&c.NatsConnectRetryInterval, "natsConnectRetryInterval", fc.NatsConnectRetryInterval, "default nats retry connect interval in seconds.")
|
flag.IntVar(&c.NatsConnectRetryInterval, "natsConnectRetryInterval", fc.NatsConnectRetryInterval, "default nats retry connect interval in seconds.")
|
||||||
flag.IntVar(&c.NatsReconnectJitter, "natsReconnectJitter", fc.NatsReconnectJitter, "default nats ReconnectJitter interval in milliseconds.")
|
flag.IntVar(&c.NatsReconnectJitter, "natsReconnectJitter", fc.NatsReconnectJitter, "default nats ReconnectJitter interval in milliseconds.")
|
||||||
flag.IntVar(&c.NatsReconnectJitterTLS, "natsReconnectJitterTLS", fc.NatsReconnectJitterTLS, "default nats ReconnectJitterTLS interval in seconds.")
|
flag.IntVar(&c.NatsReconnectJitterTLS, "natsReconnectJitterTLS", fc.NatsReconnectJitterTLS, "default nats ReconnectJitterTLS interval in seconds.")
|
||||||
|
|
|
@ -91,7 +91,12 @@ func NewServer(c *Configuration, version string) (*server, error) {
|
||||||
for {
|
for {
|
||||||
var err error
|
var err error
|
||||||
// Setting MaxReconnects to -1 which equals unlimited.
|
// Setting MaxReconnects to -1 which equals unlimited.
|
||||||
conn, err = nats.Connect(c.BrokerAddress, opt, nats.MaxReconnects(-1), nats.ReconnectJitter(time.Duration(c.NatsReconnectJitter)*time.Millisecond, time.Duration(c.NatsReconnectJitterTLS)*time.Second))
|
conn, err = nats.Connect(c.BrokerAddress,
|
||||||
|
opt,
|
||||||
|
nats.MaxReconnects(-1),
|
||||||
|
nats.ReconnectJitter(time.Duration(c.NatsReconnectJitter)*time.Millisecond, time.Duration(c.NatsReconnectJitterTLS)*time.Second),
|
||||||
|
nats.Timeout(time.Second*time.Duration(c.NatsConnOptTimeout)),
|
||||||
|
)
|
||||||
// If no servers where available, we loop and retry until succesful.
|
// If no servers where available, we loop and retry until succesful.
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("error: could not connect, waiting %v seconds, and retrying: %v\n", c.NatsConnectRetryInterval, err)
|
log.Printf("error: could not connect, waiting %v seconds, and retrying: %v\n", c.NatsConnectRetryInterval, err)
|
||||||
|
|
Loading…
Add table
Reference in a new issue