Documentation ¶
Overview ¶
Package client is an interface for an RPC client
Index ¶
- Constants
- Variables
- func NewRequest(target micro.Target, protocols *micro.Protocols, request interface{}) micro.Request
- func RetryAlways(ctx context.Context, req micro.Request, retryCount int, err error) (bool, error)
- func RetryOnError(ctx context.Context, req micro.Request, retryCount int, err error) (bool, error)
- type BackoffFunc
- type CallFunc
- type CallOption
- func WithBackoff(fn BackoffFunc) CallOption
- func WithCallWrapper(cw ...CallWrapper) CallOption
- func WithConnClose() CallOption
- func WithDialTimeout(d time.Duration) CallOption
- func WithNode(node string) CallOption
- func WithRequestTimeout(d time.Duration) CallOption
- func WithRetries(i int) CallOption
- func WithRetry(fn RetryFunc) CallOption
- func WithSelectFilters(filters ...selector.Filter) CallOption
- func WithServiceToken() CallOption
- func WithStreamTimeout(d time.Duration) CallOption
- type CallOptions
- type CallWrapper
- type Client
- type Closer
- type Option
- func Backoff(fn BackoffFunc) Option
- func DialTimeout(d time.Duration) Option
- func PoolSize(d int) Option
- func PoolTTL(d time.Duration) Option
- func Registry(r micro.Registry) Option
- func RequestTimeout(d time.Duration) Option
- func Retries(i int) Option
- func Retry(fn RetryFunc) Option
- func Selector(s selector.Selector) Option
- func StreamTimeout(d time.Duration) Option
- func Wrap(w Wrapper) Option
- func WrapCall(cw ...CallWrapper) Option
- type Options
- type RetryFunc
- type StreamWrapper
- type Wrapper
Constants ¶
const ( // DefaultRetries is the default number of times a request is tried. DefaultRetries = 5 // DefaultRequestTimeout is the default request timeout. DefaultRequestTimeout = time.Second * 30 // DefaultConnectionTimeout is the default connection timeout. DefaultConnectionTimeout = time.Second * 5 // DefaultPoolSize sets the connection pool size. DefaultPoolSize = 100 // DefaultPoolTTL sets the connection pool ttl. DefaultPoolTTL = time.Minute * 1 )
Variables ¶
var ( // DefaultBackoff is the default backoff function for retries. DefaultBackoff = exponentialBackoff // DefaultRetry is the default check-for-retry function for retries. DefaultRetry = RetryOnError )
Functions ¶
func NewRequest ¶
func RetryAlways ¶
RetryAlways always retry on error.
Types ¶
type BackoffFunc ¶
type CallFunc ¶
type CallFunc func(ctx context.Context, node *micro.Node, req micro.Request, rsp interface{}, opts CallOptions) error
CallFunc represents the individual call func.
type CallOption ¶
type CallOption func(*CallOptions)
CallOption used by Call or Stream.
func WithBackoff ¶
func WithBackoff(fn BackoffFunc) CallOption
WithBackoff is a CallOption which overrides that which set in Options.CallOptions.
func WithCallWrapper ¶
func WithCallWrapper(cw ...CallWrapper) CallOption
WithCallWrapper is a CallOption which adds to the existing CallFunc wrappers.
func WithConnClose ¶
func WithConnClose() CallOption
WithConnClose sets the Connection header to close.
func WithDialTimeout ¶
func WithDialTimeout(d time.Duration) CallOption
WithDialTimeout is a CallOption which overrides that which set in Options.CallOptions.
func WithNode ¶
func WithNode(node string) CallOption
func WithRequestTimeout ¶
func WithRequestTimeout(d time.Duration) CallOption
WithRequestTimeout is a CallOption which overrides that which set in Options.CallOptions.
func WithRetries ¶
func WithRetries(i int) CallOption
WithRetries sets the number of tries for a call. This CallOption overrides Options.CallOptions.
func WithRetry ¶
func WithRetry(fn RetryFunc) CallOption
WithRetry is a CallOption which overrides that which set in Options.CallOptions.
func WithSelectFilters ¶
func WithSelectFilters(filters ...selector.Filter) CallOption
func WithServiceToken ¶
func WithServiceToken() CallOption
WithServiceToken is a CallOption which overrides the authorization header with the services own auth token.
func WithStreamTimeout ¶
func WithStreamTimeout(d time.Duration) CallOption
WithStreamTimeout sets the stream timeout.
type CallOptions ¶
type CallOptions struct { // Node id of remote hosts Node string // node version Internal bool // Request/Response timeout of entire srv.Call, for single request timeout set ConnectionTimeout. RequestTimeout time.Duration // Stream timeout for the stream StreamTimeout time.Duration // Backoff func Backoff BackoffFunc // Check if retriable func Retry RetryFunc // node filters Filters []selector.Filter // Middleware for low level call func CallWrappers []CallWrapper // ConnectionTimeout of one request to the server. // Set this lower than the RequestTimeout to enable retries on connection timeout. ConnectionTimeout time.Duration // Duration to cache the response for CacheExpiry time.Duration // Transport Dial Timeout. Used for initial dial to establish a connection. DialTimeout time.Duration // Number of Call attempts Retries int // Use the services own auth token ServiceToken bool // ConnClose sets the Connection: close header. ConnClose bool }
CallOptions are options used to make calls to a server.
type CallWrapper ¶
CallWrapper is a low level wrapper for the CallFunc.
type Client ¶
type Client interface { Call(ctx context.Context, req micro.Request, rsp interface{}, opts ...CallOption) error Stream(ctx context.Context, req micro.Request, opts ...CallOption) (micro.Stream, error) Publish(ctx context.Context, req micro.Request, opts ...CallOption) error }
Client is the interface used to make requests to services. It supports Request/Response via Transport and Publishing via the Broker. It also supports bidirectional streaming of requests.
func FromService ¶
FromService wraps a client to inject service and auth metadata.
type Closer ¶
type Closer interface { // CloseSend closes the send direction of the stream. CloseSend() error }
Closer handle client close.
type Option ¶
type Option func(*Options)
Option used by the Client.
func Backoff ¶
func Backoff(fn BackoffFunc) Option
Backoff is used to set the backoff function used when retrying Calls.
func DialTimeout ¶
DialTimeout sets the transport dial timeout.
func RequestTimeout ¶
RequestTimeout set the request timeout.
func StreamTimeout ¶
StreamTimeout sets the stream timeout.
func WrapCall ¶
func WrapCall(cw ...CallWrapper) Option
Adds a Wrapper to the list of CallFunc wrappers.
type Options ¶
type Options struct { Registry micro.Registry Selector selector.Selector Transport transport.Transport // Plugged interfaces Broker broker.Broker // Middleware for client Wrappers []Wrapper // Connection Pool PoolSize int PoolTTL time.Duration // Default Call Options CallOptions CallOptions }
Options are the Client options.
type RetryFunc ¶
type RetryFunc func(ctx context.Context, req micro.Request, retryCount int, err error) (bool, error)
note that returning either false or a non-nil error will result in the call not being retried.
type StreamWrapper ¶
StreamWrapper wraps a Stream and returns the equivalent.