Middleware Overview
Add cross-cutting concerns to your sagas.
Middleware Pipeline​
Available Middleware​
| Package | Purpose |
|---|---|
| Logging | Structured logging |
| Tracing | OpenTelemetry spans |
| Metrics | Prometheus metrics |
| Validation | Schema validation |
| Idempotency | Deduplication |
| Tenant | Multi-tenancy |
Using Middleware​
import { createBus } from '@saga-bus/core';
import { createLoggingMiddleware } from '@saga-bus/middleware-logging';
import { createTracingMiddleware } from '@saga-bus/middleware-tracing';
import { createMetricsMiddleware } from '@saga-bus/middleware-metrics';
const bus = createBus({
transport,
store,
sagas: [{ definition: orderSaga }],
middleware: [
createLoggingMiddleware({ level: 'info' }),
createTracingMiddleware({ serviceName: 'order-worker' }),
createMetricsMiddleware({ prefix: 'saga_bus' }),
],
});
Middleware Order​
Order matters! Recommended order:
- Logging (first - logs everything)
- Tracing (creates spans for downstream)
- Metrics (records timing)
- Validation (reject invalid early)
- Idempotency (check duplicates)
- Tenant (extract context)
Creating Custom Middleware​
See Custom Middleware.