client

package
v0.0.0-...-315a808 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 14, 2024 License: MIT Imports: 21 Imported by: 0

Documentation

Overview

Package client is an interface for an RPC client

Index

Constants

View Source
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

View Source
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 NewRequest(target micro.Target, protocols *micro.Protocols, request interface{}) micro.Request

func RetryAlways

func RetryAlways(ctx context.Context, req micro.Request, retryCount int, err error) (bool, error)

RetryAlways always retry on error.

func RetryOnError

func RetryOnError(ctx context.Context, req micro.Request, retryCount int, err error) (bool, error)

RetryOnError retries a request on a 500 or timeout error.

Types

type BackoffFunc

type BackoffFunc func(ctx context.Context, req micro.Request, attempts int) (time.Duration, error)

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

type CallWrapper func(CallFunc) CallFunc

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

func FromService(name string, c Client) Client

FromService wraps a client to inject service and auth metadata.

func NewClient

func NewClient(opt ...Option) (Client, error)

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

func DialTimeout(d time.Duration) Option

DialTimeout sets the transport dial timeout.

func PoolSize

func PoolSize(d int) Option

PoolSize sets the connection pool size.

func PoolTTL

func PoolTTL(d time.Duration) Option

PoolTTL sets the connection pool ttl.

func Registry

func Registry(r micro.Registry) Option

func RequestTimeout

func RequestTimeout(d time.Duration) Option

RequestTimeout set the request timeout.

func Retries

func Retries(i int) Option

Retries set the number of retries when making the request.

func Retry

func Retry(fn RetryFunc) Option

Retry sets the retry function to be used when re-trying.

func Selector

func Selector(s selector.Selector) Option

func StreamTimeout

func StreamTimeout(d time.Duration) Option

StreamTimeout sets the stream timeout.

func Wrap

func Wrap(w Wrapper) Option

Adds a Wrapper to a list of options passed into the client.

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.

func NewOptions

func NewOptions(options ...Option) Options

NewOptions creates new 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

type StreamWrapper func(micro.Stream) micro.Stream

StreamWrapper wraps a Stream and returns the equivalent.

type Wrapper

type Wrapper func(Client) Client

Wrapper wraps a client and returns a client.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL