Add the notion of a node selector for routing

This commit is contained in:
Asim
2015-12-07 21:09:10 +00:00
parent 050fa26afb
commit 4e6b9347d9
4 changed files with 106 additions and 2 deletions

View File

@@ -43,6 +43,10 @@ func newRpcClient(opt ...Option) Client {
opts.broker = broker.DefaultBroker
}
if opts.selector == nil {
opts.selector = nodeSelector
}
rc := &rpcClient{
once: once,
opts: opts,
@@ -146,7 +150,7 @@ func (r *rpcClient) Call(ctx context.Context, request Request, response interfac
return errors.InternalServerError("go.micro.client", err.Error())
}
node, err := nodeSelector(service)
node, err := r.opts.selector(service)
if err != nil {
return err
}
@@ -169,7 +173,7 @@ func (r *rpcClient) Stream(ctx context.Context, request Request, responseChan in
return nil, errors.InternalServerError("go.micro.client", err.Error())
}
node, err := nodeSelector(service)
node, err := r.opts.selector(service)
if err != nil {
return nil, err
}