@supplyflavors/sf-messaging
v1.0.0
Published
Shared RabbitMQ messaging library for SupplyFlavors services
Maintainers
Readme
@supplyflavors/sf-messaging
Shared RabbitMQ messaging library for SupplyFlavors microservices.
Installation
npm install @supplyflavors/sf-messagingUsage
Publishing Events
import { publishEvent } from '@supplyflavors/sf-messaging'
await publishEvent({
exchange: 'sf.events',
routingKey: 'orders.created.v1',
payload: {
orderId: 123,
customerId: 456,
total: 99.99,
},
source: 'sf-orders',
type: 'orders.created',
})Subscribing to Events
import { subscribe, EventEnvelope } from '@supplyflavors/sf-messaging'
interface OrderCreatedPayload {
orderId: number
customerId: number
total: number
}
await subscribe<OrderCreatedPayload>({
queue: 'my-service.orders.created',
exchange: 'sf.events',
routingKey: 'orders.created.v1',
onMessage: async (event: EventEnvelope<OrderCreatedPayload>, ctx) => {
console.log(`Received order ${event.payload.orderId}`)
// Process the event
},
})Configuration
The library reads configuration from environment variables:
| Variable | Default | Description |
|----------|---------|-------------|
| SF_MQ_URL | - | Full AMQP connection URL (overrides individual settings) |
| SF_MQ_HOST | sf-mq | RabbitMQ host |
| SF_MQ_PORT | 5672 | RabbitMQ port |
| SF_MQ_USER | guest | RabbitMQ username |
| SF_MQ_PASSWORD | guest | RabbitMQ password |
| SF_MQ_EXCHANGE | sf.events | Default exchange name |
Features
- Topic-based routing: Uses RabbitMQ topic exchanges for flexible routing
- Dead Letter Queue: Failed messages are automatically sent to DLQ after max retries
- Idempotency: Built-in message deduplication to prevent duplicate processing
- Retry logic: Configurable retry attempts with automatic requeue
- Tracing: Automatic trace ID propagation for distributed tracing
API Reference
publishEvent<T>(options: PublishOptions<T>)
Publishes an event to RabbitMQ.
subscribe<T>(options: SubscribeOptions<T>)
Subscribes to events from a queue.
createIdempotencyStore(maxItems?, ttlMs?)
Creates an in-memory idempotency store for message deduplication.
License
UNLICENSED - Private package for SupplyFlavors internal use only.
