gRPC

Configuration

Config structs, YAML examples, and option helpers for gRPC

YAML Configuration Example

config.yaml
extensions:
  grpc:
    address: ":50051"
    maxRecvMsgSize: 4194304          # 4 MB
    maxSendMsgSize: 4194304          # 4 MB
    maxConcurrentStreams: 0           # 0 = unlimited
    connectionTimeout: "120s"

    keepalive:
      time: "2h"
      timeout: "20s"
      enforcementPolicy: true
      minTime: "5m"
      permitWithoutStream: false

    # TLS
    enableTLS: false
    tlsCertFile: "/path/to/server.crt"
    tlsKeyFile: "/path/to/server.key"
    tlsCAFile: "/path/to/ca.crt"
    clientAuth: false                 # set true for mTLS

    # Features
    enableHealthCheck: true
    enableReflection: true

    # Observability
    enableMetrics: true
    enableTracing: true
    enableLogging: true

The extension loads config from extensions.grpc first, falling back to grpc.

Programmatic Configuration

ext := grpc.NewExtension(
    grpc.WithAddress(":9090"),
    grpc.WithTLS("server.crt", "server.key", "ca.crt"),
    grpc.WithClientAuth(true),
    grpc.WithMaxMessageSize(10 * 1024 * 1024), // 10 MB
    grpc.WithMaxConcurrentStreams(100),
)

Config Struct Reference

Config

FieldTypeDefaultDescription
Addressstring":50051"TCP listen address
MaxRecvMsgSizeint4194304 (4 MB)Maximum receive message size
MaxSendMsgSizeint4194304 (4 MB)Maximum send message size
MaxConcurrentStreamsuint320Max concurrent streams (0 = unlimited)
ConnectionTimeouttime.Duration120sConnection timeout
KeepaliveKeepaliveConfigSee belowKeepalive settings
EnableTLSboolfalseEnable TLS
TLSCertFilestring""TLS certificate file
TLSKeyFilestring""TLS private key file
TLSCAFilestring""CA file for client auth
ClientAuthboolfalseRequire client certificates
EnableHealthCheckbooltrueEnable gRPC health service
EnableReflectionbooltrueEnable server reflection
EnableMetricsbooltrueEnable metrics interceptor
EnableTracingbooltrueEnable tracing interceptor
EnableLoggingbooltrueEnable logging interceptor

KeepaliveConfig

FieldTypeDefaultDescription
Timetime.Duration2hPing interval for idle connections
Timeouttime.Duration20sTimeout waiting for ping ack
EnforcementPolicybooltrueEnforce minimum ping interval
MinTimetime.Duration5mMinimum allowed ping interval from clients
PermitWithoutStreamboolfalseAllow keepalive pings without active streams

Option Helpers

FunctionDescription
WithAddress(addr)Set the listen address
WithMaxMessageSize(size)Set max recv and send message size
WithMaxConcurrentStreams(max)Set max concurrent streams
WithTLS(certFile, keyFile, caFile)Enable TLS
WithClientAuth(enable)Toggle mTLS client authentication
WithHealthCheck(enable)Toggle health check service
WithReflection(enable)Toggle server reflection
WithMetrics(enable)Toggle metrics
WithTracing(enable)Toggle tracing
WithRequireConfig(require)Require config from ConfigManager
WithConfig(config)Provide a complete config struct

How is this guide?

On this page