client - ActiveState ActiveGo 1.8
...

Package client

import "github.com/micro/go-micro/client"
Overview
Index
Subdirectories

Overview ▾

Package client is an interface for an RPC client

Index ▾

Variables
func Call(ctx context.Context, request Request, response interface{}, opts ...CallOption) error
func CallRemote(ctx context.Context, address string, request Request, response interface{}, opts ...CallOption) error
func NewContext(ctx context.Context, c Client) context.Context
func Publish(ctx context.Context, p Publication) error
func String() string
type BackoffFunc
type CallFunc
type CallOption
    func WithBackoff(fn BackoffFunc) CallOption
    func WithCallWrapper(cw ...CallWrapper) CallOption
    func WithDialTimeout(d time.Duration) CallOption
    func WithRequestTimeout(d time.Duration) CallOption
    func WithRetries(i int) CallOption
    func WithRetry(fn RetryFunc) CallOption
    func WithSelectOption(so ...selector.SelectOption) CallOption
type CallOptions
type CallWrapper
type Client
    func FromContext(ctx context.Context) (Client, bool)
    func NewClient(opt ...Option) Client
type Option
    func Backoff(fn BackoffFunc) Option
    func Broker(b broker.Broker) Option
    func Codec(contentType string, c codec.NewCodec) Option
    func ContentType(ct string) Option
    func DialTimeout(d time.Duration) Option
    func PoolSize(d int) Option
    func PoolTTL(d time.Duration) Option
    func Registry(r registry.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 Transport(t transport.Transport) Option
    func Wrap(w Wrapper) Option
    func WrapCall(cw ...CallWrapper) Option
type Options
type Publication
    func NewPublication(topic string, message interface{}) Publication
type PublishOption
type PublishOptions
type Request
    func NewJsonRequest(service, method string, request interface{}, reqOpts ...RequestOption) Request
    func NewProtoRequest(service, method string, request interface{}, reqOpts ...RequestOption) Request
    func NewRequest(service, method string, request interface{}, reqOpts ...RequestOption) Request
type RequestOption
    func StreamingRequest() RequestOption
type RequestOptions
type RetryFunc
type StreamWrapper
type Streamer
    func Stream(ctx context.Context, request Request, opts ...CallOption) (Streamer, error)
    func StreamRemote(ctx context.Context, address string, request Request, opts ...CallOption) (Streamer, error)
type Wrapper

Package files

backoff.go buffer.go client.go client_wrapper.go context.go options.go retry.go rpc_client.go rpc_codec.go rpc_pool.go rpc_publication.go rpc_request.go rpc_stream.go

Variables

var (
    // DefaultClient is a default client to use out of the box
    DefaultClient Client = newRpcClient()
    // DefaultBackoff is the default backoff function for retries
    DefaultBackoff = exponentialBackoff
    // DefaultRetry is the default check-for-retry function for retries
    DefaultRetry = alwaysRetry
    // DefaultRetries is the default number of times a request is tried
    DefaultRetries = 1
    // DefaultRequestTimeout is the default request timeout
    DefaultRequestTimeout = time.Second * 5
    // DefaultPoolSize sets the connection pool size
    DefaultPoolSize = 0
    // DefaultPoolTTL sets the connection pool ttl
    DefaultPoolTTL = time.Minute
)

func Call

func Call(ctx context.Context, request Request, response interface{}, opts ...CallOption) error

Makes a synchronous call to a service using the default client

func CallRemote

func CallRemote(ctx context.Context, address string, request Request, response interface{}, opts ...CallOption) error

Makes a synchronous call to the specified address using the default client

func NewContext

func NewContext(ctx context.Context, c Client) context.Context

func Publish

func Publish(ctx context.Context, p Publication) error

Publishes a publication using the default client. Using the underlying broker set within the options.

func String

func String() string

type BackoffFunc

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

type CallFunc

CallFunc represents the individual call func

type CallFunc func(ctx context.Context, address string, req Request, rsp interface{}, opts CallOptions) error

type CallOption

CallOption used by Call or Stream

type CallOption func(*CallOptions)

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 WithDialTimeout

func WithDialTimeout(d time.Duration) CallOption

WithDialTimeout is a CallOption which overrides that which set in Options.CallOptions

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 is a CallOption which overrides that which set in Options.CallOptions

func WithRetry

func WithRetry(fn RetryFunc) CallOption

WithRetry is a CallOption which overrides that which set in Options.CallOptions

func WithSelectOption

func WithSelectOption(so ...selector.SelectOption) CallOption

type CallOptions

type CallOptions struct {
    SelectOptions []selector.SelectOption

    // Backoff func
    Backoff BackoffFunc
    // Check if retriable func
    Retry RetryFunc
    // Transport Dial Timeout
    DialTimeout time.Duration
    // Number of Call attempts
    Retries int
    // Request/Response timeout
    RequestTimeout time.Duration

    // Middleware for low level call func
    CallWrappers []CallWrapper

    // Other options for implementations of the interface
    // can be stored in a context
    Context context.Context
}

type CallWrapper

CallWrapper is a low level wrapper for the CallFunc

type CallWrapper func(CallFunc) CallFunc

type Client

Client is the interface used to make requests to services. It supports Request/Response via Transport and Publishing via the Broker. It also supports bidiectional streaming of requests.

type Client interface {
    Init(...Option) error
    Options() Options
    NewPublication(topic string, msg interface{}) Publication
    NewRequest(service, method string, req interface{}, reqOpts ...RequestOption) Request
    NewProtoRequest(service, method string, req interface{}, reqOpts ...RequestOption) Request
    NewJsonRequest(service, method string, req interface{}, reqOpts ...RequestOption) Request
    Call(ctx context.Context, req Request, rsp interface{}, opts ...CallOption) error
    CallRemote(ctx context.Context, addr string, req Request, rsp interface{}, opts ...CallOption) error
    Stream(ctx context.Context, req Request, opts ...CallOption) (Streamer, error)
    StreamRemote(ctx context.Context, addr string, req Request, opts ...CallOption) (Streamer, error)
    Publish(ctx context.Context, p Publication, opts ...PublishOption) error
    String() string
}

func FromContext

func FromContext(ctx context.Context) (Client, bool)

func NewClient

func NewClient(opt ...Option) Client

Creates a new client with the options passed in

type Option

Option used by the Client

type Option func(*Options)

func Backoff

func Backoff(fn BackoffFunc) Option

Backoff is used to set the backoff function used when retrying Calls

func Broker

func Broker(b broker.Broker) Option

Broker to be used for pub/sub

func Codec

func Codec(contentType string, c codec.NewCodec) Option

Codec to be used to encode/decode requests for a given content type

func ContentType

func ContentType(ct string) Option

Default content type of the client

func DialTimeout

func DialTimeout(d time.Duration) Option

Transport dial timeout

func PoolSize

func PoolSize(d int) Option

PoolSize sets the connection pool size

func PoolTTL

func PoolTTL(d time.Duration) Option

PoolSize sets the connection pool size

func Registry

func Registry(r registry.Registry) Option

Registry to find nodes for a given service

func RequestTimeout

func RequestTimeout(d time.Duration) Option

The request timeout. Should this be a Call Option?

func Retries

func Retries(i int) Option

Number of retries when making the request. Should this be a Call Option?

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

Select is used to select a node to route a request to

func Transport

func Transport(t transport.Transport) Option

Transport to use for communication e.g http, rabbitmq, etc

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 {
    // Used to select codec
    ContentType string

    // Plugged interfaces
    Broker    broker.Broker
    Codecs    map[string]codec.NewCodec
    Registry  registry.Registry
    Selector  selector.Selector
    Transport transport.Transport

    // Connection Pool
    PoolSize int
    PoolTTL  time.Duration

    // Middleware for client
    Wrappers []Wrapper

    // Default Call Options
    CallOptions CallOptions

    // Other options for implementations of the interface
    // can be stored in a context
    Context context.Context
}

type Publication

Publication is the interface for a message published asynchronously

type Publication interface {
    Topic() string
    Message() interface{}
    ContentType() string
}

func NewPublication

func NewPublication(topic string, message interface{}) Publication

Creates a new publication using the default client

type PublishOption

PublishOption used by Publish

type PublishOption func(*PublishOptions)

type PublishOptions

type PublishOptions struct {
    // Other options for implementations of the interface
    // can be stored in a context
    Context context.Context
}

type Request

Request is the interface for a synchronous request used by Call or Stream

type Request interface {
    Service() string
    Method() string
    ContentType() string
    Request() interface{}
    // indicates whether the request will be a streaming one rather than unary
    Stream() bool
}

func NewJsonRequest

func NewJsonRequest(service, method string, request interface{}, reqOpts ...RequestOption) Request

Creates a new json request using the default client

func NewProtoRequest

func NewProtoRequest(service, method string, request interface{}, reqOpts ...RequestOption) Request

Creates a new protobuf request using the default client

func NewRequest

func NewRequest(service, method string, request interface{}, reqOpts ...RequestOption) Request

Creates a new request using the default client. Content Type will be set to the default within options and use the appropriate codec

type RequestOption

RequestOption used by NewRequest

type RequestOption func(*RequestOptions)

func StreamingRequest

func StreamingRequest() RequestOption

type RequestOptions

type RequestOptions struct {
    Stream bool

    // Other options for implementations of the interface
    // can be stored in a context
    Context context.Context
}

type RetryFunc

note that returning either false or a non-nil error will result in the call not being retried

type RetryFunc func(ctx context.Context, req Request, retryCount int, err error) (bool, error)

type StreamWrapper

StreamWrapper wraps a Stream and returns the equivalent

type StreamWrapper func(Streamer) Streamer

type Streamer

Streamer is the inteface for a bidirectional synchronous stream

type Streamer interface {
    Context() context.Context
    Request() Request
    Send(interface{}) error
    Recv(interface{}) error
    Error() error
    Close() error
}

func Stream

func Stream(ctx context.Context, request Request, opts ...CallOption) (Streamer, error)

Creates a streaming connection with a service and returns responses on the channel passed in. It's up to the user to close the streamer.

func StreamRemote

func StreamRemote(ctx context.Context, address string, request Request, opts ...CallOption) (Streamer, error)

Creates a streaming connection to the address specified.

type Wrapper

Wrapper wraps a client and returns a client

type Wrapper func(Client) Client

Subdirectories

Name Synopsis
..
mock
rpc