Documentation ¶
Overview ¶
Package micro is a pluggable framework for microservices
Index ¶
- Variables
- func NewContext(ctx context.Context, s Service) context.Context
- func RegisterHandler(s server.Server, h interface{}, opts ...server.HandlerOption) error
- func RegisterSubscriber(topic string, s server.Server, h interface{}, opts ...server.SubscriberOption) error
- type Function
- type Option
- func Action(a func(*cli.Context)) Option
- func Address(addr string) Option
- func AfterStart(fn func() error) Option
- func AfterStop(fn func() error) Option
- func BeforeStart(fn func() error) Option
- func BeforeStop(fn func() error) Option
- func Broker(b broker.Broker) Option
- func Client(c client.Client) Option
- func Cmd(c cmd.Cmd) Option
- func Context(ctx context.Context) Option
- func Flags(flags ...cli.Flag) Option
- func Metadata(md map[string]string) Option
- func Name(n string) Option
- func RegisterInterval(t time.Duration) Option
- func RegisterTTL(t time.Duration) Option
- func Registry(r registry.Registry) Option
- func Selector(s selector.Selector) Option
- func Server(s server.Server) Option
- func Transport(t transport.Transport) Option
- func Version(v string) Option
- func WrapCall(w ...client.CallWrapper) Option
- func WrapClient(w ...client.Wrapper) Option
- func WrapHandler(w ...server.HandlerWrapper) Option
- func WrapSubscriber(w ...server.SubscriberWrapper) Option
- type Options
- type Publisher
- type Service
Constants ¶
This section is empty.
Variables ¶
var (
HeaderPrefix = "Micro-"
)
Functions ¶
func NewContext ¶
NewContext returns a new Context with the Service embedded within it.
func RegisterHandler ¶
func RegisterHandler(s server.Server, h interface{}, opts ...server.HandlerOption) error
RegisterHandler is syntactic sugar for registering a handler
func RegisterSubscriber ¶
func RegisterSubscriber(topic string, s server.Server, h interface{}, opts ...server.SubscriberOption) error
RegisterSubscriber is syntactic sugar for registering a subscriber
Types ¶
type Function ¶
type Function interface { // Inherits Service interface Service // Done signals to complete execution Done() error // Handle registers an RPC handler Handle(v interface{}) error // Subscribe registers a subscriber Subscribe(topic string, v interface{}) error }
Function is a one time executing Service
func NewFunction ¶
NewFunction returns a new Function for a one time executing Service
type Option ¶
type Option func(*Options)
func AfterStart ¶
func BeforeStart ¶
func BeforeStop ¶
func Context ¶
Context specifies a context for the service. Can be used to signal shutdown of the service. Can be used for extra option values.
func RegisterInterval ¶
RegisterInterval specifies the interval on which to re-register
func RegisterTTL ¶
RegisterTTL specifies the TTL to use when registering the service
func WrapCall ¶
func WrapCall(w ...client.CallWrapper) Option
WrapCall is a convenience method for wrapping a Client CallFunc
func WrapClient ¶
WrapClient is a convenience method for wrapping a Client with some middleware component. A list of wrappers can be provided. Wrappers are applied in reverse order so the last is executed first.
func WrapHandler ¶
func WrapHandler(w ...server.HandlerWrapper) Option
WrapHandler adds a handler Wrapper to a list of options passed into the server
func WrapSubscriber ¶
func WrapSubscriber(w ...server.SubscriberWrapper) Option
WrapSubscriber adds a subscriber Wrapper to a list of options passed into the server
type Options ¶
type Options struct { Broker broker.Broker Cmd cmd.Cmd Client client.Client Server server.Server Registry registry.Registry Transport transport.Transport // Before and After funcs BeforeStart []func() error BeforeStop []func() error AfterStart []func() error AfterStop []func() error // Other options for implementations of the interface // can be stored in a context Context context.Context }
type Publisher ¶
type Publisher interface {
Publish(ctx context.Context, msg interface{}, opts ...client.PublishOption) error
}
Publisher is syntactic sugar for publishing
type Service ¶
type Service interface { // The service name Name() string // Init initialises options Init(...Option) // Options returns the current options Options() Options // Client is used to call services Client() client.Client // Server is for handling requests and events Server() server.Server // Run the service Run() error // The service implementation String() string }
Service is an interface that wraps the lower level libraries within go-micro. Its a convenience method for building and initialising services.
func FromContext ¶
FromContext retrieves a Service from the Context.
func NewService ¶
NewService creates and returns a new Service based on the packages within.
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
Package agent provides an interface for building robots
|
Package agent provides an interface for building robots |
command
Package command is an interface for defining bot commands
|
Package command is an interface for defining bot commands |
input
Package input is an interface for bot inputs
|
Package input is an interface for bot inputs |
proto
Package go_micro_bot is a generated protocol buffer package.
|
Package go_micro_bot is a generated protocol buffer package. |
handler
Package handler provides http handlers
|
Package handler provides http handlers |
handler/api
Package api provides an http-rpc handler which provides the entire http request over rpc
|
Package api provides an http-rpc handler which provides the entire http request over rpc |
handler/broker
Package broker provides a go-micro/broker handler
|
Package broker provides a go-micro/broker handler |
handler/cloudevents
Package cloudevents provides a cloudevents handler publishing the event using the go-micro/client
|
Package cloudevents provides a cloudevents handler publishing the event using the go-micro/client |
handler/event
Package event provides a handler which publishes an event
|
Package event provides a handler which publishes an event |
handler/file
Package file serves file relative to the current directory
|
Package file serves file relative to the current directory |
handler/http
Package http is a http reverse proxy handler
|
Package http is a http reverse proxy handler |
handler/registry
Package registry is a go-micro/registry handler
|
Package registry is a go-micro/registry handler |
handler/rpc
Package rpc is a go-micro rpc handler.
|
Package rpc is a go-micro rpc handler. |
handler/udp
Package udp reads and write from a udp connection
|
Package udp reads and write from a udp connection |
handler/unix
Package unix reads from a unix socket expecting it to be in /tmp/path
|
Package unix reads from a unix socket expecting it to be in /tmp/path |
handler/web
Package web contains the web handler including websocket support
|
Package web contains the web handler including websocket support |
proto
Package go_api is a generated protocol buffer package.
|
Package go_api is a generated protocol buffer package. |
resolver
Package resolver resolves a http request to an endpoint
|
Package resolver resolves a http request to an endpoint |
resolver/grpc
Package grpc resolves a grpc service like /greeter.Say/Hello to greeter service
|
Package grpc resolves a grpc service like /greeter.Say/Hello to greeter service |
resolver/host
Package host resolves using http host
|
Package host resolves using http host |
resolver/micro
Package micro provides a micro rpc resolver which prefixes a namespace
|
Package micro provides a micro rpc resolver which prefixes a namespace |
resolver/path
Package path resolves using http path
|
Package path resolves using http path |
resolver/vpath
Package vpath resolves using http path and recognised versioned urls
|
Package vpath resolves using http path and recognised versioned urls |
router
Package router provides api service routing
|
Package router provides api service routing |
router/registry
Package registry provides a dynamic api service router
|
Package registry provides a dynamic api service router |
server
Package server provides an API gateway server which handles inbound requests
|
Package server provides an API gateway server which handles inbound requests |
server/acme
Package acme abstracts away various ACME libraries
|
Package acme abstracts away various ACME libraries |
server/acme/autocert
Package autocert is the ACME provider from golang.org/x/crypto/acme/autocert This provider does not take any config.
|
Package autocert is the ACME provider from golang.org/x/crypto/acme/autocert This provider does not take any config. |
server/acme/certmagic
Package certmagic is the ACME provider from github.com/mholt/certmagic
|
Package certmagic is the ACME provider from github.com/mholt/certmagic |
server/http
Package http provides a http server with features; acme, cors, etc
|
Package http provides a http server with features; acme, cors, etc |
Package broker is an interface used for asynchronous messaging
|
Package broker is an interface used for asynchronous messaging |
http
Package http provides a http based message broker
|
Package http provides a http based message broker |
memory
Package memory provides a memory broker
|
Package memory provides a memory broker |
nats
Package nats provides a NATS broker
|
Package nats provides a NATS broker |
service
Package service provides the broker service client
|
Package service provides the broker service client |
Package client is an interface for an RPC client
|
Package client is an interface for an RPC client |
grpc
Package grpc provides a gRPC client Package grpc provides a gRPC options
|
Package grpc provides a gRPC client Package grpc provides a gRPC options |
mock
Package mock provides a mock client for testing
|
Package mock provides a mock client for testing |
mucp
Package mucp provides an mucp client
|
Package mucp provides an mucp client |
pool
Package pool is a connection pool
|
Package pool is a connection pool |
selector
Package selector is a way to pick a list of service nodes
|
Package selector is a way to pick a list of service nodes |
selector/dns
Package dns provides a dns SRV selector
|
Package dns provides a dns SRV selector |
selector/registry
Package registry uses the go-micro registry for selection
|
Package registry uses the go-micro registry for selection |
selector/router
Package router is a network/router selector
|
Package router is a network/router selector |
selector/static
Package static provides a static resolver which returns the name/ip passed in without any change
|
Package static provides a static resolver which returns the name/ip passed in without any change |
Package codec is an interface for encoding messages
|
Package codec is an interface for encoding messages |
bytes
Package bytes provides a bytes codec which does not encode or decode anything
|
Package bytes provides a bytes codec which does not encode or decode anything |
grpc
Package grpc provides a grpc codec
|
Package grpc provides a grpc codec |
json
Package json provides a json codec
|
Package json provides a json codec |
jsonrpc
Package jsonrpc provides a json-rpc 1.0 codec
|
Package jsonrpc provides a json-rpc 1.0 codec |
proto
Package proto provides a proto codec
|
Package proto provides a proto codec |
protorpc
Package proto is a generated protocol buffer package.
|
Package proto is a generated protocol buffer package. |
text
Package text reads any text/* content-type
|
Package text reads any text/* content-type |
Package config is an interface for dynamic configuration.
|
Package config is an interface for dynamic configuration. |
cmd
Package cmd is an interface for parsing the command line
|
Package cmd is an interface for parsing the command line |
encoder
Package encoder handles source encoding formats
|
Package encoder handles source encoding formats |
loader
package loader manages loading from multiple sources
|
package loader manages loading from multiple sources |
options
Package options provides a way to initialise options
|
Package options provides a way to initialise options |
reader
Package reader parses change sets and provides config values
|
Package reader parses change sets and provides config values |
source
Package source is the interface for sources
|
Package source is the interface for sources |
source/file
Package file is a file source.
|
Package file is a file source. |
source/memory
Package memory is a memory source
|
Package memory is a memory source |
debug
|
|
profile
Package profile is for profilers
|
Package profile is for profilers |
profile/pprof
Package pprof provides a pprof profiler
|
Package pprof provides a pprof profiler |
Package errors provides a way to return detailed information for an RPC request error.
|
Package errors provides a way to return detailed information for an RPC request error. |
Package metadata is a way of defining message headers
|
Package metadata is a way of defining message headers |
Package monitor monitors service health
|
Package monitor monitors service health |
Package network is for creating internetworks
|
Package network is for creating internetworks |
resolver
Package resolver resolves network names to addresses
|
Package resolver resolves network names to addresses |
resolver/dns
Package dns resolves names to dns records
|
Package dns resolves names to dns records |
resolver/dnssrv
Package dns srv resolves names to dns srv records
|
Package dns srv resolves names to dns srv records |
resolver/http
Package http resolves names to network addresses using a http request
|
Package http resolves names to network addresses using a http request |
resolver/registry
Package registry resolves names using the go-micro registry
|
Package registry resolves names using the go-micro registry |
resolver/static
Package static is a static resolver
|
Package static is a static resolver |
service/handler
Package handler implements network RPC handler
|
Package handler implements network RPC handler |
Package plugin provides the ability to load plugins Package plugin provides the ability to load plugins
|
Package plugin provides the ability to load plugins Package plugin provides the ability to load plugins |
Package proxy is a transparent proxy built on the go-micro/server
|
Package proxy is a transparent proxy built on the go-micro/server |
grpc
Package grpc transparently forwards the grpc protocol using a go-micro client.
|
Package grpc transparently forwards the grpc protocol using a go-micro client. |
http
Package http provides a micro rpc to http proxy
|
Package http provides a micro rpc to http proxy |
mucp
Package mucp transparently forwards the incoming request using a go-micro client.
|
Package mucp transparently forwards the incoming request using a go-micro client. |
Package mdns is a multicast dns registry Package registry is an interface for service discovery
|
Package mdns is a multicast dns registry Package registry is an interface for service discovery |
cache
Package cache provides a registry cache
|
Package cache provides a registry cache |
etcd
Package etcd provides an etcd service registry
|
Package etcd provides an etcd service registry |
mdns
Package mdns provides a multicast dns registry
|
Package mdns provides a multicast dns registry |
memory
Package memory provides an in-memory registry
|
Package memory provides an in-memory registry |
service
Package service uses the registry service
|
Package service uses the registry service |
Package router provides a network routing control plane
|
Package router provides a network routing control plane |
Package runtime is a service runtime manager
|
Package runtime is a service runtime manager |
kubernetes
Package kubernetes implements kubernetes micro runtime
|
Package kubernetes implements kubernetes micro runtime |
package
Package packager creates a binary image.
|
Package packager creates a binary image. |
package/docker
Package docker builds docker images
|
Package docker builds docker images |
package/go
Package golang is a go package manager
|
Package golang is a go package manager |
process
Package process executes a binary
|
Package process executes a binary |
process/os
Package os runs processes locally
|
Package os runs processes locally |
source
Package source retrieves source code
|
Package source retrieves source code |
source/git
Package git provides a git source
|
Package git provides a git source |
source/go
Package golang is a source for Go
|
Package golang is a source for Go |
Package server is an interface for a micro server
|
Package server is an interface for a micro server |
grpc
Package grpc provides a grpc server
|
Package grpc provides a grpc server |
mucp
Package mucp provides an mucp server
|
Package mucp provides an mucp server |
Package service encapsulates the client, server and other interfaces to provide a complete micro service.
|
Package service encapsulates the client, server and other interfaces to provide a complete micro service. |
mucp
Package mucp initialises a mucp service
|
Package mucp initialises a mucp service |
Package store is an interface for distribute data storage.
|
Package store is an interface for distribute data storage. |
cloudflare
Package cloudflare is a store implementation backed by cloudflare workers kv Note that the cloudflare workers KV API is eventually consistent.
|
Package cloudflare is a store implementation backed by cloudflare workers kv Note that the cloudflare workers KV API is eventually consistent. |
etcd
Package etcd is an etcd v3 implementation of kv
|
Package etcd is an etcd v3 implementation of kv |
memory
Package memory is a in-memory store store
|
Package memory is a in-memory store store |
postgresql
Package postgresql implements a micro Store backed by sql
|
Package postgresql implements a micro Store backed by sql |
service
Package service implements the store service interface
|
Package service implements the store service interface |
Package sync is a distributed synchronization framework
|
Package sync is a distributed synchronization framework |
event
Package event provides a distributed log interface
|
Package event provides a distributed log interface |
leader
Package leader provides leader election
|
Package leader provides leader election |
lock
Package lock provides distributed locking
|
Package lock provides distributed locking |
lock/etcd
Package etcd is an etcd implementation of lock
|
Package etcd is an etcd implementation of lock |
lock/http
Package http adds a http lock implementation
|
Package http adds a http lock implementation |
lock/http/server
Package server implements the sync http server
|
Package server implements the sync http server |
lock/memory
Package memory provides a sync.Mutex implementation of the lock for local use
|
Package memory provides a sync.Mutex implementation of the lock for local use |
task
Package task provides an interface for distributed jobs
|
Package task provides an interface for distributed jobs |
task/broker
Package broker provides a distributed task manager built on the micro broker
|
Package broker provides a distributed task manager built on the micro broker |
task/local
Package local provides a local task runner
|
Package local provides a local task runner |
time
Package time provides clock synchronization
|
Package time provides clock synchronization |
time/local
Package local provides a local clock
|
Package local provides a local clock |
time/ntp
Package ntp provides ntp synchronized time
|
Package ntp provides ntp synchronized time |
Package transport is an interface for synchronous connection based communication
|
Package transport is an interface for synchronous connection based communication |
grpc
Package grpc provides a grpc transport
|
Package grpc provides a grpc transport |
http
Package http returns a http2 transport using net/http
|
Package http returns a http2 transport using net/http |
memory
Package memory is an in-memory transport
|
Package memory is an in-memory transport |
quic
Package quic provides a QUIC based transport
|
Package quic provides a QUIC based transport |
Package tunnel provides gre network tunnelling
|
Package tunnel provides gre network tunnelling |
broker
Package broker is a tunnel broker
|
Package broker is a tunnel broker |
transport
Package transport provides a tunnel transport
|
Package transport provides a tunnel transport |
util
|
|
backoff
Package backoff provides backoff functionality
|
Package backoff provides backoff functionality |
io
Package io is for io management
|
Package io is for io management |
log
Package log is a global internal logger
|
Package log is a global internal logger |
mux
Package mux provides proxy muxing
|
Package mux provides proxy muxing |
socket
Package socket provides a pseudo socket
|
Package socket provides a pseudo socket |
Package web provides web based micro services
|
Package web provides web based micro services |