Skip to main content

RabbitMQ Transport

Production-ready transport using RabbitMQ.

Installation​

npm install @saga-bus/transport-rabbitmq

Basic Usage​

import { RabbitMqTransport } from '@saga-bus/transport-rabbitmq';

const transport = new RabbitMqTransport({
url: 'amqp://localhost:5672',
});

Configuration​

OptionTypeDefaultDescription
urlstringRequiredAMQP connection URL
exchangestring'saga-bus'Exchange name
exchangeTypestring'topic'Exchange type
queuePrefixstring'saga-bus'Queue name prefix
prefetchnumber10Prefetch count
heartbeatnumber60Heartbeat interval (seconds)

Full Example​

const transport = new RabbitMqTransport({
url: process.env.RABBITMQ_URL || 'amqp://localhost:5672',
exchange: 'my-app',
exchangeType: 'topic',
queuePrefix: 'my-app',
prefetch: 20,
heartbeat: 30,
});

const bus = createBus({
transport,
store,
sagas: [{ definition: orderSaga }],
});

await bus.start();

Docker Setup​

# docker-compose.yml
services:
rabbitmq:
image: rabbitmq:3-management
ports:
- "5672:5672"
- "15672:15672"
environment:
RABBITMQ_DEFAULT_USER: guest
RABBITMQ_DEFAULT_PASS: guest

Connection Management​

The transport handles reconnection automatically:

// Built-in exponential backoff
// Automatic queue/exchange recreation

Dead Letter Queue​

Failed messages go to DLQ automatically:

my-app.OrderSaga.dlq