Documentation
¶
Index ¶
- type MicroService
- type MicroServiceOption
- func WithAggresiveGC() MicroServiceOption
- func WithContext(ctx context.Context) MicroServiceOption
- func WithGRPC(preprocess func(srv *grpc.Server)) MicroServiceOption
- func WithGRPCConnCallback(cb func(conn *grpc.ClientConn)) MicroServiceOption
- func WithGRPCStreamInterceptors(interceptors ...grpc.StreamServerInterceptor) MicroServiceOption
- func WithGRPCUnaryInterceptors(interceptors ...grpc.UnaryServerInterceptor) MicroServiceOption
- func WithGRPCValidator() MicroServiceOption
- func WithHTTPCORS() MicroServiceOption
- func WithHttpHandler(pattern string, handler http.Handler) MicroServiceOption
- func WithNamedWorker(name string, worker func(ctx context.Context) error) MicroServiceOption
- func WithPprof() MicroServiceOption
- func WithPrometheus() MicroServiceOption
- func WithPrometheusWithPrefix(prefix string) MicroServiceOption
- func WithRecover() MicroServiceOption
- func WithServerOptions(options ...grpc.ServerOption) MicroServiceOption
- func WithWorker(worker func(ctx context.Context) error) MicroServiceOption
- func WithoutGRPCReflection() MicroServiceOption
- func WithoutHTTPClientMonitor() MicroServiceOption
- func WithoutHTTPLogTail() MicroServiceOption
- func WithoutServiceInfo() MicroServiceOption
- type ServiceInfo
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type MicroService ¶
type MicroService struct {
// contains filtered or unexported fields
}
MicroService is a All-in-one container for hosting grpc and/or http server, along with multiple predefined utils.
func NewMicroService ¶
func NewMicroService(opts ...MicroServiceOption) *MicroService
NewMicroService return an object to setup micro service in cloud.
func (*MicroService) ListenAndServe ¶
func (ms *MicroService) ListenAndServe(port int) error
ListenAndServe start service server by given `port`, If `port==0`, a random available port will be used.
type MicroServiceOption ¶
type MicroServiceOption func(ms *MicroService)
MicroServiceOption offer config tuning for micro service.
func WithAggresiveGC ¶
func WithAggresiveGC() MicroServiceOption
WithAggresiveGC invokes Garbage Collecting periodically, to reduce small chunk of files memory footprint reserved by Go.
func WithContext ¶
func WithContext(ctx context.Context) MicroServiceOption
WithContext sets the context for whole microservice. When ctx get done, the microservice will be terminated.
func WithGRPC ¶
func WithGRPC(preprocess func(srv *grpc.Server)) MicroServiceOption
WithGRPC binds a grpc server. Example usage:
```service.WithhGRPC(func(gs *grpc.Server) {
pb.RegisterServiceServer(gs, NewServiceServer())
}```
func WithGRPCConnCallback ¶
func WithGRPCConnCallback(cb func(conn *grpc.ClientConn)) MicroServiceOption
WithGRPCConnCallback is invoked after GRPC server starts serving, and a self-connect GRPC connection will be dialed and be returned in the callback.
func WithGRPCStreamInterceptors ¶
func WithGRPCStreamInterceptors(interceptors ...grpc.StreamServerInterceptor) MicroServiceOption
WithGRPCStreamInterceptors chained given interceptors with MicroService default StreamServerInterceptor using grpc_middleware
func WithGRPCUnaryInterceptors ¶
func WithGRPCUnaryInterceptors(interceptors ...grpc.UnaryServerInterceptor) MicroServiceOption
WithGRPCUnaryInterceptors chained given interceptors with MicroService default UnaryServerInterceptors using grpc_middleware
func WithGRPCValidator ¶
func WithGRPCValidator() MicroServiceOption
WithGRPCValidator enable validator for message in GRPC if any one was defined.
func WithHTTPCORS ¶
func WithHTTPCORS() MicroServiceOption
WithHTTPCORS enables cors for http endpoint. Should not enable in production.
func WithHttpHandler ¶
func WithHttpHandler(pattern string, handler http.Handler) MicroServiceOption
WithHttpHandler binds a http server implementing http.Handler This handler has better pattern definition. Two kinds of pattern: 1. `{pattern}/`: any path has prefix of pattern, it should be partial of the path. 2. `{pattern}`: no backslash. An fixed endpoint, which should be the whole path.
func WithNamedWorker ¶
func WithNamedWorker(name string, worker func(ctx context.Context) error) MicroServiceOption
WithNamedWorker adds dependency worker with this service. If the worker returns, the microservice will be terminated.
func WithPprof ¶
func WithPprof() MicroServiceOption
WithPprof register the golang built-in profiling interface to `/debug` http path.
func WithPrometheus ¶
func WithPrometheus() MicroServiceOption
WithPrometheus registers the service to monitor infrastructure.
func WithPrometheusWithPrefix ¶
func WithPrometheusWithPrefix(prefix string) MicroServiceOption
WithPrometheusWithHandler registers the service to monitor infrastructure with customized handler.
func WithServerOptions ¶
func WithServerOptions(options ...grpc.ServerOption) MicroServiceOption
WithServerOptions sets the GRPC server options. Common used to set grpc message size, like `service.WithServerOptions(grpc.MaxRecvMsgSize(1024*1024*16))`
func WithWorker ¶
func WithWorker(worker func(ctx context.Context) error) MicroServiceOption
WithWorker adds dependency worker with this service. If the worker returns, the microservice will be terminated.
func WithoutGRPCReflection ¶
func WithoutGRPCReflection() MicroServiceOption
func WithoutHTTPClientMonitor ¶
func WithoutHTTPClientMonitor() MicroServiceOption
func WithoutHTTPLogTail ¶
func WithoutHTTPLogTail() MicroServiceOption
func WithoutServiceInfo ¶
func WithoutServiceInfo() MicroServiceOption
type ServiceInfo ¶
type ServiceInfo struct {
BuildGitCommitId string `json:"build_git_commit_id"`
BuildTime string `json:"build_time"`
FrmeworkVersion string `json:"framework_version"`
Datacenter string `json:"datacenter"`
ServiceNames []string `json:"service_names"`
RemoteWatchPath string `json:"remote_watch_path"`
Owner string `json:"owner"`
Workers []string `json:"workers"`
UniqueWorkers []string `json:"unique_workers"`
Tags []string `json:"tags"`
Debug bool `json:"debug"`
Uptime time.Duration `json:"uptime"`
UptimePretty string `json:"uptime_pretty"`
StartTime time.Time `json:"start_time"`
APITestEnabled bool `json:"api_test_enabled"`
Dependencies []string `json:"dependencies"`
Host interface{} `json:"host"`
Self interface{} `json:"self"`
}