Skip to main content

JetstreamStrategy

Defined in: src/server/strategy.ts:30

NestJS custom transport strategy for NATS JetStream.

Coordinates all server-side providers:

  1. Registers handlers from NestJS into PatternRegistry
  2. Creates required streams and consumers
  3. Starts message consumption and routing
  4. Handles Core or JetStream RPC based on configuration

All dependencies are injected via the NestJS DI container.

Extends

  • Server

Implements

  • CustomTransportStrategy

Constructors

Constructor

new JetstreamStrategy(options, connection, patternRegistry, streamProvider, consumerProvider, messageProvider, eventRouter, rpcRouter, coreRpcServer, ackWaitMap?, metadataProvider?): JetstreamStrategy

Defined in: src/server/strategy.ts:36

Parameters

options

JetstreamModuleOptions

connection

ConnectionProvider

patternRegistry

PatternRegistry

streamProvider

StreamProvider

consumerProvider

ConsumerProvider

messageProvider

MessageProvider

eventRouter

EventRouter

rpcRouter

RpcRouter

coreRpcServer

CoreRpcServer

ackWaitMap?

Map<StreamKind, number> = ...

metadataProvider?

MetadataProvider

Returns

JetstreamStrategy

Overrides

Server.constructor

Properties

transportId

readonly transportId: symbol

Defined in: src/server/strategy.ts:31

Unique transport identifier.

Implementation of

CustomTransportStrategy.transportId

Overrides

Server.transportId

Methods

addHandler()

addHandler(pattern, callback, isEventHandler?, extras?): void

Defined in: src/server/strategy.ts:150

Override NestJS Server.addHandler to fail-fast on duplicate pattern registration.

The base class silently overwrites duplicate RPC handlers (last wins) and appends duplicate event handlers to a linked list. Both behaviors are hazardous in a JetStream context: silent overwrite drops a handler the user wrote, and double event dispatch double-acks/double-processes the same JetStream message.

We treat any pattern collision as a fatal misconfiguration so it surfaces at bootstrap instead of in production traffic.

Parameters

pattern

unknown

callback

MessageHandler

isEventHandler?

boolean = false

extras?

Record<string, unknown> = {}

Returns

void

Overrides

Server.addHandler


close()

close(): void

Defined in: src/server/strategy.ts:130

Stop all consumers, routers, subscriptions, and metadata heartbeat. Called during shutdown.

Returns

void

Implementation of

CustomTransportStrategy.close

Overrides

Server.close


getPatternRegistry()

getPatternRegistry(): PatternRegistry

Defined in: src/server/strategy.ts:199

Access the pattern registry (for module-level introspection).

Returns

PatternRegistry


listen()

listen(callback): Promise<void>

Defined in: src/server/strategy.ts:57

Start the transport: register handlers, create infrastructure, begin consumption.

Called by NestJS when connectMicroservice() is used, or internally by the module.

Parameters

callback

() => void

Returns

Promise<void>

Implementation of

CustomTransportStrategy.listen

Overrides

Server.listen


on()

on(event, callback): void

Defined in: src/server/strategy.ts:176

Register event listener (required by Server base class).

Stores callbacks for client use. Primary lifecycle events are routed through EventBus.

Parameters

event

string

callback

Function

Returns

void

Overrides

Server.on


unwrap()

unwrap<T>(): T

Defined in: src/server/strategy.ts:188

Unwrap the underlying NATS connection.

Type Parameters

T

T

Returns

T

Throws

Error if the transport has not started.

Overrides

Server.unwrap