Skip to main content

JetstreamModuleOptions

Defined in: src/interfaces/options.interface.ts:129

Root module configuration for JetstreamModule.forRoot().

Minimal usage requires only name and servers. All other fields have production-ready defaults.

Properties

broadcast?

optional broadcast?: StreamConsumerOverrides

Defined in: src/interfaces/options.interface.ts:159

Broadcast event stream/consumer overrides.


codec?

optional codec?: Codec

Defined in: src/interfaces/options.interface.ts:140

Global message codec.

Default

JsonCodec

connectionOptions?

optional connectionOptions?: Partial<ConnectionOptions>

Defined in: src/interfaces/options.interface.ts:213

Raw NATS ConnectionOptions pass-through for advanced connection config. Allows setting tls, auth, reconnect behavior, maxReconnectAttempts, etc. Merged with name and servers — those take precedence.


consumer?

optional consumer?: boolean

Defined in: src/interfaces/options.interface.ts:153

Enable consumer infrastructure (streams, consumers, message routing). Set to false for publisher-only services (e.g., API gateways).

Default

true

events?

optional events?: StreamConsumerOverrides

Defined in: src/interfaces/options.interface.ts:156

Workqueue event stream/consumer overrides.


hooks?

optional hooks?: Partial<TransportHooks>

Defined in: src/interfaces/options.interface.ts:175

Transport lifecycle hook handlers. Unset hooks are silently ignored — no default logging.


name

name: string

Defined in: src/interfaces/options.interface.ts:131

Service name. Used for stream/consumer/subject naming.


ordered?

optional ordered?: OrderedEventOverrides

Defined in: src/interfaces/options.interface.ts:169

Ordered event consumer configuration.

Ordered events use a separate stream with Limits retention and deliver messages in strict sequential order. Use ordered: prefix when publishing.

See

OrderedEventOverrides


rpc?

optional rpc?: RpcConfig

Defined in: src/interfaces/options.interface.ts:146

RPC transport mode and configuration.

Default

{ mode: 'core' }

servers

servers: string[]

Defined in: src/interfaces/options.interface.ts:134

NATS server URLs.


shutdownTimeout?

optional shutdownTimeout?: number

Defined in: src/interfaces/options.interface.ts:206

Graceful shutdown timeout in ms. Handlers exceeding this are abandoned.

Default

10_000

Methods

onDeadLetter()?

optional onDeadLetter(info): Promise<void>

Defined in: src/interfaces/options.interface.ts:199

Async callback invoked when an event message exhausts all delivery attempts. Called before msg.term(). If it throws, the message is nak'd for retry.

Use this to persist dead letters to an external store (DB, S3, another queue). The NATS connection is available via JETSTREAM_CONNECTION token in forRootAsync.

Parameters

info

DeadLetterInfo

Returns

Promise<void>

Example

JetstreamModule.forRootAsync({
name: 'my-service',
imports: [DlqModule],
inject: [DlqService, JETSTREAM_CONNECTION],
useFactory: (dlqService, connection) => ({
servers: ['nats://localhost:4222'],
onDeadLetter: async (info) => {
await dlqService.persist(info);
},
}),
})