Listening for Reconnect Events
Because reconnect is primarily under the covers, many libraries provide an event listener you can use to be notified of reconnect events. This event can be especially important for applications sending a lot of messages.
// Connection event handlers are invoked asynchronously
// and the state of the connection may have changed when
// the callback is invoked.
nc, err := nats.Connect("demo.nats.io",
nats.DisconnectErrHandler(func(nc *nats.Conn, err error) {
// handle disconnect error event
}),
nats.ReconnectHandler(func(nc *nats.Conn) {
// handle reconnect event
}))
if err != nil {
log.Fatal(err)
}
defer nc.Close()
// Do something with the connectionclass MyConnectionListener implements ConnectionListener {
public void connectionEvent(Connection conn, Events event) {
switch (event) {
case CONNECTED:
// The connection has successfully completed the handshake with the nats-server.
break;
case CLOSED:
// The connection is permanently closed, either by manual action or failed reconnects
break;
case DISCONNECTED:
// The connection lost its connection, but may try to reconnect if configured to
break;
case RECONNECTED:
// The connection was connected, lost its connection and successfully reconnected.
break;
case RESUBSCRIBED:
// The connection was reconnected and the server has been notified of all subscriptions.
break;
case DISCOVERED_SERVERS:
// The connection was made aware of new servers from the current server connection.
break;
case LAME_DUCK:
// connected server is coming down soon, might want to prepare for it
break;
}
}
}
MyConnectionListener listener = new MyConnectionListener();
Options options = new Options.Builder()
.server("nats://demo.nats.io:4222")
.connectionListener(listener)
.build();
Connection nc = Nats.connect(options);
// Do something with the connection
nc.close();Last updated
Was this helpful?