You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
auth2/internal/util/retry.go

47 lines
714 B
Go

package util
import (
"fmt"
"github.com/avast/retry-go"
"go-micro.dev/v4"
)
func ServiceRetryGet(service micro.Service, svcName string, attempts uint) (string, error) {
r := service.Options().Registry
var (
hostAndPort string
)
err := retry.Do(
func() error {
services, err := r.GetService(svcName)
if err == nil {
for _, s := range services {
for _, n := range s.Nodes {
hostAndPort = n.Address
break
}
if hostAndPort != "" {
break
}
}
}
if hostAndPort == "" {
return fmt.Errorf("Service %v not found", svcName)
}
return nil
},
retry.Attempts(attempts),
)
if err != nil {
return "", err
}
return hostAndPort, nil
}