Documentation
¶
Overview ¶
The client package provides a method to make synchronous, asynchronous and streaming requests to services. By default json and protobuf codecs are supported.
import "github.com/micro/go-micro/client"
c := client.NewClient()
req := c.NewRequest("go.micro.srv.greeter", "Greeter.Hello", &greeter.Request{
Name: "John",
})
rsp := &greeter.Response{}
if err := c.Call(context.Background(), req, rsp); err != nil {
return err
}
fmt.Println(rsp.Msg)
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{}, ...) error
- func NewContext(ctx context.Context, c Client) context.Context
- func Publish(ctx context.Context, p Publication) error
- func String() string
- type CallOption
- type CallOptions
- type Client
- type 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 Registry(r registry.Registry) Option
- func RequestTimeout(d time.Duration) Option
- func Retries(i int) Option
- func Selector(s selector.Selector) Option
- func Transport(t transport.Transport) Option
- func Wrap(w Wrapper) Option
- type Options
- type Publication
- type PublishOption
- type PublishOptions
- type Request
- type RequestOption
- type RequestOptions
- type StreamWrapper
- type Streamer
- type Wrapper
Constants ¶
This section is empty.
Variables ¶
var ( DefaultClient Client = newRpcClient() DefaultRetries = 1 DefaultRequestTimeout = time.Second * 5 )
Functions ¶
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
Types ¶
type CallOption ¶
type CallOption func(*CallOptions)
func WithSelectOption ¶
func WithSelectOption(so selector.SelectOption) CallOption
type CallOptions ¶
type CallOptions struct {
SelectOptions []selector.SelectOption
// Other options for implementations of the interface
// can be stored in a context
Context context.Context
}
type Client ¶
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
}
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 Option ¶
type Option func(*Options)
func RequestTimeout ¶
The request timeout. Should this be a Call Option?
type Options ¶
type Options struct {
ContentType string
Broker broker.Broker
Codecs map[string]codec.NewCodec
Registry registry.Registry
Selector selector.Selector
Transport transport.Transport
Wrappers []Wrapper
Retries int
RequestTimeout time.Duration
DialTimeout time.Duration
// Other options for implementations of the interface
// can be stored in a context
Context context.Context
}
type Publication ¶
func NewPublication ¶
func NewPublication(topic string, message interface{}) Publication
Creates a new publication using the default client
type PublishOption ¶
type PublishOption func(*PublishOptions)
type PublishOptions ¶
type Request ¶
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 ¶
type RequestOption func(*RequestOptions)
func StreamingRequest ¶
func StreamingRequest() RequestOption
type RequestOptions ¶
type StreamWrapper ¶
StreamWrapper wraps a Stream and returns the equivalent
type Streamer ¶
type Streamer interface {
Context() context.Context
Request() Request
Send(interface{}) error
Recv(interface{}) error
Error() error
Close() error
}
func Stream ¶
Creates a streaming connection with a service and returns responses on the channel passed in. It's upto 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.