Documentation ¶
Overview ¶
Package micro is a pluggable framework for microservices
Index ¶
- 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 BrokerOption
- type Event
- type LoggerOption
- type Option
- func Address(addr string) Option
- func AfterStart(fn func(context.Context) error) Option
- func AfterStop(fn func(context.Context) error) Option
- func BeforeStart(fn func(context.Context) error) Option
- func BeforeStop(fn func(context.Context) error) Option
- func Broker(b broker.Broker, opts ...BrokerOption) Option
- func Client(c ...client.Client) Option
- func Clients(c ...client.Client) Option
- func Config(c ...config.Config) Option
- func Configs(c ...config.Config) Option
- func Context(ctx context.Context) Option
- func Logger(l logger.Logger, opts ...LoggerOption) Option
- func Metadata(md metadata.Metadata) Option
- func Meter(m ...meter.Meter) Option
- func Meters(m ...meter.Meter) Option
- func Name(n string) Option
- func Register(r register.Register, opts ...RegisterOption) Option
- func RegisterInterval(td time.Duration, opts ...RegisterOption) Option
- func RegisterTTL(td time.Duration, opts ...RegisterOption) Option
- func Router(r router.Router, opts ...RouterOption) Option
- func Server(s ...server.Server) Option
- func Servers(s ...server.Server) Option
- func Store(s ...store.Store) Option
- func Stores(s ...store.Store) Option
- func Tracer(t tracer.Tracer, opts ...TracerOption) Option
- func Version(v string) Option
- type Options
- type RegisterOption
- type RouterOption
- type Service
- type TracerOption
Constants ¶
This section is empty.
Variables ¶
This section is empty.
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 BrokerOption ¶
type BrokerOption func(*brokerOptions)
BrokerOption func signature
func BrokerClient ¶
func BrokerClient(n string) BrokerOption
BrokerClient specifies clients for broker
func BrokerServer ¶
func BrokerServer(n string) BrokerOption
BrokerServer specifies servers for broker
type Event ¶
type Event interface { // Publish publishes a message to the event topic Publish(ctx context.Context, msg interface{}, opts ...client.PublishOption) error }
Event is used to publish messages to a topic
type Option ¶
Option func
func AfterStart ¶
AfterStart run funcs after service starts
func BeforeStart ¶
BeforeStart run funcs before service starts
func BeforeStop ¶
BeforeStop run funcs before service stops
func Broker ¶
func Broker(b broker.Broker, opts ...BrokerOption) Option
Broker to be used for client and server
func Context ¶
Context specifies a context for the service. Can be used to signal shutdown of the service and for extra option values.
func Logger ¶
func Logger(l logger.Logger, opts ...LoggerOption) Option
Logger set the logger to use
func Register ¶
func Register(r register.Register, opts ...RegisterOption) Option
Register sets the register for the service and the underlying components
func RegisterInterval ¶
func RegisterInterval(td time.Duration, opts ...RegisterOption) Option
RegisterInterval specifies the interval on which to re-register
func RegisterTTL ¶
func RegisterTTL(td time.Duration, opts ...RegisterOption) Option
RegisterTTL specifies the TTL to use when registering the service
type Options ¶
type Options struct { // Context holds external options or cancel stuff Context context.Context // Metadata holds service metadata Metadata metadata.Metadata // Version holds service version Version string // Name holds service name Name string // Brokers holds brokers Brokers []broker.Broker // Loggers holds loggers Loggers []logger.Logger // Meters holds meter Meters []meter.Meter // Configs holds config Configs []config.Config // Clients holds clients Clients []client.Client // Auths holds auths Auths []auth.Auth // Stores holds stores Stores []store.Store // Registers holds registers Registers []register.Register // Tracers holds tracers Tracers []tracer.Tracer // Routers holds routers Routers []router.Router // BeforeStart holds funcs that runs before service starts BeforeStart []func(context.Context) error // BeforeStop holds funcs that runs before service stops BeforeStop []func(context.Context) error // AfterStart holds funcs that runs after service starts AfterStart []func(context.Context) error // AfterStop holds funcs that runs after service stops AfterStop []func(context.Context) error // Servers holds servers Servers []server.Server }
Options for micro service
func NewOptions ¶
NewOptions returns new Options filled with defaults and overrided by provided opts
type RegisterOption ¶
type RegisterOption func(*registerOptions)
RegisterOption func signature
func RegisterBroker ¶
func RegisterBroker(n string) RegisterOption
RegisterBroker specifies broker for register
func RegisterRouter ¶
func RegisterRouter(n string) RegisterOption
RegisterRouter speciefies routers for register
func RegisterServer ¶
func RegisterServer(n string) RegisterOption
RegisterServer specifies servers for register
type RouterOption ¶
type RouterOption func(*routerOptions)
RouterOption func signature
func RouterClient ¶
func RouterClient(n string) RouterOption
RouterClient sets the clients for router
type Service ¶
type Service interface { // The service name Name() string // Init initialises options Init(...Option) error // Options returns the current options Options() Options // Auth is for handling auth Auth(...string) auth.Auth // Logger is for logs Logger(...string) logger.Logger // Config if for config Config(...string) config.Config // Client is for calling services Client(...string) client.Client // Broker is for sending and receiving events Broker(...string) broker.Broker // Server is for handling requests and events Server(...string) server.Server // Store is for key/val store Store(...string) store.Store // Register Register(...string) register.Register // Tracer Tracer(...string) tracer.Tracer // Router Router(...string) router.Router // Meter Meter(...string) meter.Meter // Runtime // Runtime(string) (runtime.Runtime, bool) // Profile // Profile(string) (profile.Profile, bool) // Run the service Run() error // The service implementation String() string }
Service is an interface that wraps the lower level components. Its works as container with building blocks for service.
func FromContext ¶
FromContext retrieves a Service from the Context.
func NewService ¶
NewService creates and returns a new Service based on the packages within.
type TracerOption ¶
type TracerOption func(*tracerOptions)
TracerOption func signature
func TracerBroker ¶
func TracerBroker(n string) TracerOption
TracerBroker sets the broker for tracer
func TracerClient ¶
func TracerClient(n string) TracerOption
TracerClient sets the clients for tracer
func TracerServer ¶
func TracerServer(n string) TracerOption
TracerServer sets the servers for tracer
Directories ¶
Path | Synopsis |
---|---|
handler
Package handler provides http handlers
|
Package handler provides http handlers |
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/path
Package path resolves using http path
|
Package path resolves using http path |
resolver/subdomain
Package subdomain is a resolver which uses the subdomain to determine the domain to route to.
|
Package subdomain is a resolver which uses the subdomain to determine the domain to route to. |
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 |
Package auth provides authentication and authorization capability
|
Package auth provides authentication and authorization capability |
Package broker is an interface used for asynchronous messaging
|
Package broker is an interface used for asynchronous messaging |
Package build is for building source into a package
|
Package build is for building source into a package |
Package client is an interface for an RPC client
|
Package client is an interface for an RPC client |
Package codec is an interface for encoding messages
|
Package codec is an interface for encoding messages |
Package config is an interface for dynamic configuration.
|
Package config is an interface for dynamic configuration. |
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 flow is an interface used for saga pattern microservice workflow
|
Package flow is an interface used for saga pattern microservice workflow |
Package logger provides a log interface
|
Package logger provides a log interface |
wrapper
Package wrapper provides wrapper for Logger
|
Package wrapper provides wrapper for Logger |
Package metadata is a way of defining message headers Package metadata is a way of defining message headers
|
Package metadata is a way of defining message headers Package metadata is a way of defining message headers |
Package meter is for instrumentation
|
Package meter is for instrumentation |
Package network is for creating internetworks
|
Package network is for creating internetworks |
transport
Package transport is an interface for synchronous connection based communication
|
Package transport is an interface for synchronous connection based communication |
tunnel
Package tunnel provides gre network tunnelling
|
Package tunnel provides gre network tunnelling |
tunnel/broker
Package broker is a tunnel broker
|
Package broker is a tunnel broker |
tunnel/transport
Package transport provides a tunnel transport
|
Package transport provides a tunnel transport |
Package profiler is for profilers
|
Package profiler is for profilers |
http
Package http enables the http profiler
|
Package http enables the http profiler |
pprof
Package pprof provides a pprof profiler which writes output to /tmp/[name].{cpu,mem}.pprof
|
Package pprof provides a pprof profiler which writes output to /tmp/[name].{cpu,mem}.pprof |
Package proxy is a transparent proxy built on the micro/server Package proxy is a transparent proxy built on the micro/server
|
Package proxy is a transparent proxy built on the micro/server Package proxy is a transparent proxy built on the micro/server |
Package register is an interface for service discovery
|
Package register is an interface for service discovery |
Package resolver resolves network names to addresses
|
Package resolver resolves network names to addresses |
dns
Package dns resolves names to dns records
|
Package dns resolves names to dns records |
dnssrv
Package dnssrv resolves names to dns srv records
|
Package dnssrv resolves names to dns srv records |
http
Package http resolves names to network addresses using a http request
|
Package http resolves names to network addresses using a http request |
noop
Package noop is a noop resolver
|
Package noop is a noop resolver |
registry
Package register resolves names using the micro register
|
Package register resolves names using the micro register |
static
Package static is a static resolver
|
Package static is a static resolver |
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 |
Package selector is for node selection and load balancing
|
Package selector is for node selection and load balancing |
Package server is an interface for a micro server
|
Package server is an interface for a micro server |
Package store is an interface for distributed data storage.
|
Package store is an interface for distributed data storage. |
Package sync is an interface for distributed synchronization
|
Package sync is an interface for distributed synchronization |
Package tracer provides an interface for distributed tracing Package tracer provides an interface for distributed tracing
|
Package tracer provides an interface for distributed tracing Package tracer provides an interface for distributed tracing |
wrapper
Package wrapper provides wrapper for Tracer
|
Package wrapper provides wrapper for Tracer |
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 |
jitter
Package jitter provides a random jitter
|
Package jitter provides a random jitter |
pki
Package pki provides PKI all the PKI functions necessary to run micro over an untrusted network including a CA
|
Package pki provides PKI all the PKI functions necessary to run micro over an untrusted network including a CA |
pool
Package pool is a connection pool
|
Package pool is a connection pool |
qson
Package qson implmenets decoding of URL query params into JSON and Go values (using JSON struct tags).
|
Package qson implmenets decoding of URL query params into JSON and Go values (using JSON struct tags). |
ring
Package ring provides a simple ring buffer for storing local data
|
Package ring provides a simple ring buffer for storing local data |
socket
Package socket provides a pseudo socket
|
Package socket provides a pseudo socket |
stream
Package stream encapsulates streams within streams
|
Package stream encapsulates streams within streams |
sync
Package sync will sync multiple stores
|
Package sync will sync multiple stores |