Production-grade NestJS transport for NATS JetStream. Events, broadcast, ordered delivery, and RPC — all in one package.
$ npm i @horizon-republic/nestjs-jetstreamEvery messaging pattern you need for microservices — built on NATS JetStream with NestJS decorators you already know.
Core NATS for lowest latency, or JetStream for persisted commands. Both modes, one API.
At-least-once delivery with automatic retry. Acked on success, redelivered on failure.
Every subscribing service receives every message. Isolated durable consumers per service.
Strict ordering for event sourcing and projections. Six deliver policies for any scenario.
Production-ready features included. No extra packages, no boilerplate.
Exponential backoff reconnection. Your consumers recover from any transient failure automatically.
Failed messages are captured with full context. Debug with payload, headers, and error details.
Delayed delivery powered by NATS 2.12. Schedule messages for future processing without external tools.
Built-in Terminus-free health indicator. Connection + stream + consumer health in one call.
React to connect, disconnect, reconnect, and dead-letter events with typed hook handlers.
Production-ready stream and consumer configs out of the box. Override only what you need.
Familiar NestJS patterns. If you've used @nestjs/microservices, you already know this.
import { JetstreamRecordBuilder }
from '@horizon-republic/nestjs-jetstream';
// Publish an event
const record = new JetstreamRecordBuilder({
orderId: '42',
status: 'created',
}).build();
await lastValueFrom(
this.client.emit('order.created', record)
);import { EventPattern, Payload }
from '@nestjs/microservices';
@EventPattern('order.created')
handleOrderCreated(
@Payload() data: OrderCreatedDto
) {
// At-least-once delivery
// Auto-ack on success, redelivery on error
return this.ordersService.process(data);
}Get started in minutes. Production-ready defaults, zero boilerplate.