userver: gRPC server middlewares
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages Concepts
gRPC server middlewares

Your opinion will help to improve our service

Leave a feedback >

See also
gRPC middleware tutorial.

The gRPC server can be extended by middlewares. Middleware hooks are called at the various corresponding stages of handling of each incoming RPC. Different middlewares handle the call in the defined order. A middleware may decide to reject the call or call the next middleware in the stack. Middlewares may implement almost any enhancement to the gRPC server including authorization and authentication, ratelimiting, logging, tracing, audit, etc.

Default middlewares

There is an ugrpc::server::MiddlewarePipelineComponent component for configuring the middlewares pipeline. There are default middlewares:

If you add these middlewares to the components::ComponentList, these middlewares will be enabled by default. To register core gRPC server components and a set of builtin middlewares use ugrpc::server::DefaultComponentList or ugrpc::server::MinimalComponentList. As will be shown below, custom middlewares require additional actions to work: registering in grpc-server-middleware-pipeline and writing a required static config entry.

ugrpc::server::MiddlewarePipelineComponent is a component for a global configuration of server middlewares. You can enable/disable middlewares with enabled option.

If you don't want to disable userver middlewares, just take that config:

components_manager:
components:
grpc-server-middlewares-pipeline:
grpc-server:
# some server options...
some-service:
# some service options...

Enable/disable middlewares

You can enable or disable any middleware:

components_manager:
components:
grpc-server:
grpc-server-middlewares-pipeline:
middlewares:
grpc-server-headers-propagator:
enabled: false # globally disable for all services
some-service:
middlewares:
# force enable in that service. Or it can be disabled for special service
grpc-server-headers-propagator:
enabled: true

For more information about enabled:

See also
Enable/disable middlewares.

Static config options of a middleware

How to override a static config of a middleware: grpc_middlewares_config_override.

How to implement your own middleware with a static config: gRPC middlewares configuration.

How to implement your own middleware

gRPC server middleware implementaion.