Documentation
¶
Overview ¶
Package quark provides core functionality, helpers, structs and interfaces of quark framework.
Index ¶
- func CallHTTPService(s Service, method string, url string, body io.Reader, parent trace.Span) ([]byte, error)
- func GetEnvVar(key string) string
- func GetHostAddress(port int) (*url.URL, error)
- func HandleInterrupt(s Service) <-chan bool
- func StartMessageSpan(s Service, name string, m broker.Message) trace.Span
- func StartRPCSpan(ctx context.Context, s Service, name string) trace.Span
- type MessageContextCarrier
- type Option
- func Address(url *url.URL) Option
- func Broker(b broker.MessageBroker) Option
- func Discovery(d discovery.ServiceDiscovery) Option
- func Logger(l log.Logger) Option
- func Metrics(e metrics.Exposer) Option
- func Name(name string) Option
- func Tags(tags ...string) Option
- func Tracer(t trace.Tracer) Option
- func Version(version string) Option
- type Options
- type RPCMetadataCarrier
- type RPCService
- type Service
- type ServiceBase
- func (sb ServiceBase) Broker() broker.MessageBroker
- func (sb ServiceBase) Discovery() discovery.ServiceDiscovery
- func (sb ServiceBase) Dispose()
- func (sb ServiceBase) Info() service.Info
- func (sb ServiceBase) Log() logger.Logger
- func (sb ServiceBase) Metrics() metrics.Exposer
- func (sb ServiceBase) Options() Options
- func (sb ServiceBase) Tracer() trace.Tracer
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func CallHTTPService ¶
func CallHTTPService(s Service, method string, url string, body io.Reader, parent trace.Span) ([]byte, error)
CallHTTPService calls HTTP service at specified url with HTTP method and body.
func GetHostAddress ¶
GetHostAddress returns host address and optionally port on which service is hosted. If port is 0 only address is returned.
func HandleInterrupt ¶
HandleInterrupt handles interrupt signal receiced by the service.
func StartMessageSpan ¶
StartMessageSpan starts span with name and parent span taken from message.
Types ¶
type MessageContextCarrier ¶
type MessageContextCarrier struct {
Context *broker.MessageContext
}
MessageContextCarrier represents carrier for span propagation using broker message context.
func (MessageContextCarrier) ForeachKey ¶
func (c MessageContextCarrier) ForeachKey(handler func(key string, val interface{}) error) error
ForeachKey iterates over broker message context key.
func (MessageContextCarrier) Set ¶
func (c MessageContextCarrier) Set(key, val string)
Set sets metadata value inside broker message context.
type Option ¶
type Option func(*Options)
Option represents function which is used to apply service options.
func Broker ¶
func Broker(b broker.MessageBroker) Option
Broker allows to set message broker implementation.
func Discovery ¶
func Discovery(d discovery.ServiceDiscovery) Option
Discovery allows to set service discovery implementation.
func Logger ¶
Logger allows to set service logger implementation. If it is not set, internal logger will be taken.
type Options ¶
type Options struct { Info service.Info // service metadata information Logger log.Logger // service logger interface implementation Discovery discovery.ServiceDiscovery // service discovery interface implementation Broker broker.MessageBroker // service message broker interface implementation Metrics metrics.Exposer // service metrics collector interface implementation Tracer trace.Tracer // service request tracer interface implementation Context context.Context // service context }
Options represents service options.
type RPCMetadataCarrier ¶
RPCMetadataCarrier represents carrier for span propagation using gRPC metadata.
func (RPCMetadataCarrier) ForeachKey ¶
func (c RPCMetadataCarrier) ForeachKey(handler func(key, val string) error) error
ForeachKey iterates over gRPC metadata key and values.
func (RPCMetadataCarrier) Set ¶
func (c RPCMetadataCarrier) Set(key, val string)
Set sets metadata value inside gRPC metadata.
type RPCService ¶
type RPCService interface { Service RegisterServiceInstance(server interface{}, serviceInstance interface{}) error }
RPCService represents service which exposes procedures that could be called remotely.
type Service ¶
type Service interface { Info() service.Info // service metadata Options() Options // service options Log() logger.Logger // service logger Discovery() discovery.ServiceDiscovery // service discovery Broker() broker.MessageBroker // service message broker Metrics() metrics.Exposer // service metrics collector Tracer() trace.Tracer // service request tracer system.Disposer }
Service represents service instance.
type ServiceBase ¶
type ServiceBase struct {
// contains filtered or unexported fields
}
ServiceBase is base structure for custom service.
func NewService ¶
func NewService(opts ...Option) *ServiceBase
NewService creates instance of service with options passed as arguments. Service name, version and address are required options.
func (ServiceBase) Broker ¶
func (sb ServiceBase) Broker() broker.MessageBroker
Broker gets message broker instance.
func (ServiceBase) Discovery ¶
func (sb ServiceBase) Discovery() discovery.ServiceDiscovery
Discovery gets service discovery instance.
func (ServiceBase) Info ¶
func (sb ServiceBase) Info() service.Info
Info gets service metadata information.
func (ServiceBase) Log ¶
func (sb ServiceBase) Log() logger.Logger
Log gets service logger instance.
func (ServiceBase) Metrics ¶
func (sb ServiceBase) Metrics() metrics.Exposer
Metrics gets service metrics collector instance.
func (ServiceBase) Tracer ¶
func (sb ServiceBase) Tracer() trace.Tracer
Tracer gets service request tracer instance.
Directories
¶
Path | Synopsis |
---|---|
Package broker provides support for message broker.
|
Package broker provides support for message broker. |
kafka
Package kafka provides support for Kafka message broker.
|
Package kafka provides support for Kafka message broker. |
rabbitmq
Package rabbitmq provides support for RabbitMQ message broker.
|
Package rabbitmq provides support for RabbitMQ message broker. |
Package circuitbreaker provides support for circuit breaker pattern.
|
Package circuitbreaker provides support for circuit breaker pattern. |
Package data provides support for data manipulation and caching.
|
Package data provides support for data manipulation and caching. |
access
Package access provides support for data access.
|
Package access provides support for data access. |
access/document
Package document provides support for nosql document database access.
|
Package document provides support for nosql document database access. |
access/document/mgo
Package mgo provides support for nosql document database access using mgo library.
|
Package mgo provides support for nosql document database access using mgo library. |
access/rdbms
Package rdbms provides support for relational database access.
|
Package rdbms provides support for relational database access. |
access/rdbms/gorm
Package gorm provides support for relational database access using GORM (Object-Relational Mapping)
|
Package gorm provides support for relational database access using GORM (Object-Relational Mapping) |
Package logger provides default logger for quark-go framework.
|
Package logger provides default logger for quark-go framework. |
Package metrics provides support for metrics collecting mechanism.
|
Package metrics provides support for metrics collecting mechanism. |
prometheus
Package prometheus provides support for Prometheus metrics collector.
|
Package prometheus provides support for Prometheus metrics collector. |
Package middleware provides middlewares for HTTP pipeline.
|
Package middleware provides middlewares for HTTP pipeline. |
auth
Package auth provides middleware for authentication.
|
Package auth provides middleware for authentication. |
auth/jwt
Package jwt provides middleware for JSON Web Token (JWT) authentication.
|
Package jwt provides middleware for JSON Web Token (JWT) authentication. |
error
Package error provides middleware for error handling.
|
Package error provides middleware for error handling. |
logging
Package logging provides middleware for request logging.
|
Package logging provides middleware for request logging. |
metrics
Package metrics provides middleware for metrics reporting.
|
Package metrics provides middleware for metrics reporting. |
ratelimiter
Package ratelimiter provides support for HTTP rate limiter.
|
Package ratelimiter provides support for HTTP rate limiter. |
security
Package security provides security middleware.
|
Package security provides security middleware. |
tracing
Package tracing provides middleware for request tracing.
|
Package tracing provides middleware for request tracing. |
Package service provides core service functionalites and interfaces of quark-go framework.
|
Package service provides core service functionalites and interfaces of quark-go framework. |
discovery
Package discovery provides support for service discovery mechanisms.
|
Package discovery provides support for service discovery mechanisms. |
discovery/consul
Package consul provides support for service discovery mechanism based on Consul by HashiCorp.
|
Package consul provides support for service discovery mechanism based on Consul by HashiCorp. |
discovery/plain
Package plain provides support for self-hosted, in-memory, client-server plain discovery service mechanism.
|
Package plain provides support for self-hosted, in-memory, client-server plain discovery service mechanism. |
loadbalancer
Package loadbalancer provides support for load balancing mechanisms.
|
Package loadbalancer provides support for load balancing mechanisms. |
loadbalancer/random
Package random provides support for random pick load balancer.
|
Package random provides support for random pick load balancer. |
rpc
Package rpc provides support for Remote Procedure Call (RPC) mechanisms.
|
Package rpc provides support for Remote Procedure Call (RPC) mechanisms. |
rpc/grpc
Package grpc provides support for Remote Procedure Call server based on gRPC library.
|
Package grpc provides support for Remote Procedure Call server based on gRPC library. |
rpc/grpc/test
Package service is a generated protocol buffer package.
|
Package service is a generated protocol buffer package. |
trace
Package trace provides support for request tracing mechanisms.
|
Package trace provides support for request tracing mechanisms. |
trace/noop
Package noop provides support for NOOP (No Operation) request tracing mechanisms.
|
Package noop provides support for NOOP (No Operation) request tracing mechanisms. |
trace/zipkin
Package zipkin provides support for opentracing zipkin framework.
|
Package zipkin provides support for opentracing zipkin framework. |
Package system provides core functionalities and interfaces of quark-go framework.
|
Package system provides core functionalities and interfaces of quark-go framework. |