RegisterHTTPForever is just like RegisterHTTP however it first tries to register forever until a response from kontrol is received. It's useful to use it during app initializations. After the registration a reconnect is automatically handled inside the RegisterHTTP method.
(kiteURL *url.URL)
| 88 | // use it during app initializations. After the registration a reconnect is |
| 89 | // automatically handled inside the RegisterHTTP method. |
| 90 | func (k *Kite) RegisterHTTPForever(kiteURL *url.URL) { |
| 91 | // Create the httpBackoffRegister that RegisterHTTPForever will |
| 92 | // use to backoff repeated register attempts. |
| 93 | httpRegisterBackOff := backoff.NewExponentialBackOff() |
| 94 | httpRegisterBackOff.InitialInterval = 30 * time.Second |
| 95 | httpRegisterBackOff.MaxInterval = 5 * time.Minute |
| 96 | httpRegisterBackOff.Multiplier = 1.7 |
| 97 | httpRegisterBackOff.MaxElapsedTime = 0 |
| 98 | |
| 99 | register := func() error { |
| 100 | _, err := k.RegisterHTTP(kiteURL) |
| 101 | if err != nil { |
| 102 | k.Log.Error("Cannot register to Kontrol: %s Will retry after %d seconds", |
| 103 | err, |
| 104 | httpRegisterBackOff.NextBackOff()/time.Second) |
| 105 | return err |
| 106 | } |
| 107 | |
| 108 | return nil |
| 109 | } |
| 110 | |
| 111 | // this will retry register forever |
| 112 | err := backoff.Retry(register, httpRegisterBackOff) |
| 113 | if err != nil { |
| 114 | k.Log.Error("BackOff stopped retrying with Error '%s'", err) |
| 115 | } |
| 116 | } |
| 117 | |
| 118 | func (k *Kite) getKontrolPath(path string) string { |
| 119 | heartbeatURL := k.Config.KontrolURL + "/" + path |