diff --git a/client/lookup.go b/client/lookup.go index 76528bc5..32161b2c 100644 --- a/client/lookup.go +++ b/client/lookup.go @@ -2,6 +2,7 @@ package client import ( "context" + "sort" "github.com/micro/go-micro/v3/errors" "github.com/micro/go-micro/v3/router" @@ -34,6 +35,11 @@ func LookupRoute(ctx context.Context, req Request, opts CallOptions) ([]string, return nil, errors.InternalServerError("go.micro.client", "error getting next %s node: %s", req.Service(), err.Error()) } + // sort by lowest metric first + sort.Slice(routes, func(i, j int) bool { + return routes[i].Metric < routes[j].Metric + }) + var addrs []string for _, route := range routes {