grpcfx

package
v0.7.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 10, 2025 License: Apache-2.0 Imports: 11 Imported by: 0

README

ajan/grpcfx

Overview

grpcfx package provides a framework for building gRPC services with support for reflection, graceful shutdown, and integration with the dependency injection system.

Configuration

Configuration struct for the gRPC service:

type Config struct {
  Addr                    string        `conf:"addr"             default:":9090"`
  Reflection              bool          `conf:"reflection"       default:"true"`
  InitializationTimeout   time.Duration `conf:"init_timeout"     default:"25s"`
  GracefulShutdownTimeout time.Duration `conf:"shutdown_timeout" default:"5s"`
}

Example configuration:

config := &grpcfx.Config{
  Addr:                    ":50051",
  Reflection:              true,
  InitializationTimeout:   30 * time.Second,
  GracefulShutdownTimeout: 10 * time.Second,
}

Features

  • gRPC service setup and configuration
  • Server reflection support
  • Graceful shutdown handling
  • Integration with dependency injection
  • Configurable timeouts
  • Support for multiple services
  • Middleware support

API

GRPCService

The main component for gRPC service handling:

// Create a new gRPC service
service := grpcfx.NewGRPCService(config)

// Register your gRPC service implementations
pb.RegisterYourServiceServer(service.GetServer(), &YourServiceImpl{})

// Start the service
if err := service.Start(); err != nil {
  log.Fatal(err)
}

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrFailedToCreateGRPCMetrics = errors.New("failed to create gRPC metrics")
	ErrGRPCServiceNetListenError = errors.New("gRPC service net listen error")
)
View Source
var (
	ErrFailedToBuildGRPCRequestsCounter = errors.New(
		"failed to build gRPC requests counter",
	)
	ErrFailedToBuildGRPCRequestDurationHistogram = errors.New(
		"failed to build gRPC request duration histogram",
	)
)

Functions

func LoggingInterceptor

func LoggingInterceptor(logger *logfx.Logger) grpc.UnaryServerInterceptor

func MetricsInterceptor

func MetricsInterceptor(metrics *Metrics) grpc.UnaryServerInterceptor

Types

type Config

type Config struct {
	Addr                    string        `conf:"addr"             default:":9090"`
	Reflection              bool          `conf:"reflection"       default:"true"`
	InitializationTimeout   time.Duration `conf:"init_timeout"     default:"25s"`
	GracefulShutdownTimeout time.Duration `conf:"shutdown_timeout" default:"5s"`
}

type GRPCService added in v0.7.0

type GRPCService struct {
	InnerServer  *grpc.Server
	InnerMetrics *Metrics
	Config       *Config
	// contains filtered or unexported fields
}

func NewGRPCService added in v0.7.0

func NewGRPCService(
	config *Config,
	metricsProvider *metricsfx.MetricsProvider,
	logger *logfx.Logger,
) *GRPCService

func (*GRPCService) RegisterService added in v0.7.0

func (gs *GRPCService) RegisterService(desc *grpc.ServiceDesc, impl any)

func (*GRPCService) Server added in v0.7.0

func (gs *GRPCService) Server() *grpc.Server

func (*GRPCService) Start added in v0.7.0

func (gs *GRPCService) Start(ctx context.Context) (func(), error)

type Metrics

type Metrics struct {
	RequestsTotal   *metricsfx.CounterMetric
	RequestDuration *metricsfx.HistogramMetric
	// contains filtered or unexported fields
}

Metrics holds gRPC-specific metrics using the simplified MetricsBuilder approach.

func NewMetrics

func NewMetrics(provider *metricsfx.MetricsProvider) *Metrics

NewMetrics creates gRPC metrics using the simplified MetricsBuilder.

func (*Metrics) Init added in v0.7.0

func (metrics *Metrics) Init() error

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL