Documentation ¶
Index ¶
- func DefaultLogger() *zerolog.Logger
- type Collector
- type Context
- type DefaultObserver
- type Engine
- type HandlerFunc
- type HandlersChain
- type Observer
- type PrometheusCollector
- func (p *PrometheusCollector) Collect() error
- func (p *PrometheusCollector) CollectError(subject string)
- func (p *PrometheusCollector) CollectLatency(subject string, latency time.Duration)
- func (p *PrometheusCollector) CollectReply(subject string)
- func (p *PrometheusCollector) CollectSubjectReceived(subject string)
- type RecoveryFunc
- type Subscriber
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func DefaultLogger ¶
DefaultLogger sets up a simple zerolog instance
Types ¶
type Collector ¶
type Collector interface { CollectSubjectReceived(subject string) CollectLatency(subject string, latency time.Duration) CollectReply(subject string) CollectError(subject string) Collect() error }
Collector metrics collector
type Context ¶
type Context struct { Msg *nats.Msg ByteReplyPayload []byte JSONReplyPayload interface{} NatsConnection *nats.Conn NatsEncodedConnection *nats.EncodedConn Err error Keys map[string]interface{} // contains filtered or unexported fields }
Context context that's passed through handlers and middleware
func (*Context) GetByteReplyPayload ¶
GetByteReplyPayload getter for byte reply payload with metadata about if it was set
func (*Context) Next ¶
func (c *Context) Next()
Next to be called in middleware to invoke the middleware chain
func (*Context) NextWithLatencyDuration ¶
NextWithLatencyDuration Calls Next() and returns duration of execution
type DefaultObserver ¶
type DefaultObserver struct {
// contains filtered or unexported fields
}
DefaultObserver Default concrete Observer implementation
func NewDefaultObserver ¶
func NewDefaultObserver(c Collector) *DefaultObserver
NewDefaultObserver creates a default observer instance
func (*DefaultObserver) Observe ¶
func (o *DefaultObserver) Observe() error
Observe start observing and collecting metrics
func (*DefaultObserver) ObserveError ¶
func (o *DefaultObserver) ObserveError(c *Context)
ObserveError collect metrics on replies
func (*DefaultObserver) ObserveLatency ¶
func (o *DefaultObserver) ObserveLatency(c *Context, latency time.Duration)
ObserveLatency collect metrics on handler chain latency
func (*DefaultObserver) ObserveReply ¶
func (o *DefaultObserver) ObserveReply(c *Context)
ObserveReply collect metrics on replies
func (*DefaultObserver) ObserveSubjectReceived ¶
func (o *DefaultObserver) ObserveSubjectReceived(c *Context)
ObserveSubjectReceived collect metrics when subject is received
type Engine ¶
type Engine struct { NatsConnection *nats.Conn NatsEncodedConnection *nats.EncodedConn QueueGroup string OutWriter io.ReadWriter ErrWriter io.ReadWriter // contains filtered or unexported fields }
Engine framework instance
func (*Engine) Shutdown ¶
func (e *Engine) Shutdown()
Shutdown terminates all listeners and drains connections
func (*Engine) Subscribe ¶
func (e *Engine) Subscribe(subject string, handlers ...HandlerFunc)
Subscribe adds a subscriber to the NATS instance with middleware
func (*Engine) Use ¶
func (e *Engine) Use(middleware ...HandlerFunc)
Use adds global middleware to the engine which will be called for every subscription
type HandlerFunc ¶
type HandlerFunc func(*Context)
HandlerFunc defines handler used by middleware as return value
func WithByteReply ¶
func WithByteReply() HandlerFunc
WithByteReply Checks for reply channel and sends back byte response
func WithCustomRecovery ¶
func WithCustomRecovery(handle RecoveryFunc) HandlerFunc
WithCustomRecovery catches panics with custom handler
func WithJSONReply ¶
func WithJSONReply() HandlerFunc
WithJSONReply Checks for reply channel and sends back JSON response
func WithLogger ¶
func WithLogger(logger *zerolog.Logger) HandlerFunc
WithLogger wraps handler with logging
func WithMetrics ¶
func WithMetrics(o Observer) HandlerFunc
WithMetrics Observes handler behavior and reports metrics
func WithRecovery ¶
func WithRecovery() HandlerFunc
WithRecovery catches panics to prevent program crashes
type Observer ¶
type Observer interface { ObserveSubjectReceived(c *Context) ObserveLatency(c *Context, latency time.Duration) ObserveReply(c *Context) ObserveError(c *Context) Observe() error }
Observer describes when collectors should collect data
type PrometheusCollector ¶
type PrometheusCollector struct {
// contains filtered or unexported fields
}
PrometheusCollector observer for sending metrics to Prometheus
func NewPrometheusCollector ¶
func NewPrometheusCollector(port string) *PrometheusCollector
NewPrometheusCollector initialize new Prometheus observer
func (*PrometheusCollector) Collect ¶
func (p *PrometheusCollector) Collect() error
Collect starts prometheus server on p.port in a new goroutine
func (*PrometheusCollector) CollectError ¶
func (p *PrometheusCollector) CollectError(subject string)
CollectError increment counter for errors
func (*PrometheusCollector) CollectLatency ¶
func (p *PrometheusCollector) CollectLatency(subject string, latency time.Duration)
CollectLatency set histogram value for latency
func (*PrometheusCollector) CollectReply ¶
func (p *PrometheusCollector) CollectReply(subject string)
CollectReply increment counter for replies
func (*PrometheusCollector) CollectSubjectReceived ¶
func (p *PrometheusCollector) CollectSubjectReceived(subject string)
CollectSubjectReceived increment counter when message is received
type RecoveryFunc ¶
type RecoveryFunc func(c *Context, err interface{})
RecoveryFunc defines the function passable to CustomRecovery.
type Subscriber ¶
type Subscriber struct { Subject string Handlers HandlersChain }
Subscriber respresents a subscriber to be set up in Run()