Skip to main content

JetstreamClient

@horizon-republic/nestjs-jetstream


@horizon-republic/nestjs-jetstream / JetstreamClient

JetstreamClient

Defined in: src/client/jetstream.client.ts:132

NestJS ClientProxy implementation for the JetStream transport.

Supports two operational modes:

  • Core mode (default): Uses nc.request() for RPC.
  • JetStream mode: Uses js.publish() for RPC commands + inbox for responses.

Events always publish through JetStream and await a PubAck, in either mode.

Events always go through JetStream publish for guaranteed delivery. The mode only affects RPC (request/reply) behavior.

Clients are lightweight: they share the NATS connection from forRoot().

Extends​

  • ClientProxy

Constructors​

Constructor​

new JetstreamClient(rootOptions, targetServiceName, connection, codec, eventBus, names?, targetPrefixes?): JetstreamClient

Defined in: src/client/jetstream.client.ts:171

Parameters​

rootOptions​

JetstreamModuleOptions

targetServiceName​

string

connection​

ConnectionProvider

codec​

Codec

eventBus​

EventBus

names?​

NameResolver

targetPrefixes?​

TargetSubjectPrefixes

Returns​

JetstreamClient

Overrides​

ClientProxy.constructor

Methods​

cancelSchedule()​

cancelSchedule(id): Promise<void>

Defined in: src/client/jetstream.client.ts:246

Cancel a schedule created with schedule; nothing happens when it does not exist.

Parameters​

id​

string

Returns​

Promise<void>


close()​

close(): Promise<void>

Defined in: src/client/jetstream.client.ts:256

Clean up resources: reject pending RPCs, unsubscribe from status events.

Returns​

Promise<void>

Overrides​

ClientProxy.close


connect()​

connect(): Promise<NatsConnection>

Defined in: src/client/jetstream.client.ts:209

Establish connection. Called automatically by NestJS on first use.

Sets up the JetStream RPC inbox (if in JetStream mode) and subscribes to connection status events for fail-fast disconnect handling.

Returns​

Promise<NatsConnection>

The underlying NATS connection.

Overrides​

ClientProxy.connect


dispatchEvent()​

protected dispatchEvent<T>(packet): Promise<T>

Defined in: src/client/jetstream.client.ts:286

Publish a fire-and-forget event to JetStream.

Events are published to either the workqueue stream or broadcast stream depending on the subject prefix. When a schedule is present the message is published to a _sch subject within the same stream, with the target set to the original event subject.

Type Parameters​

T​

T = unknown

Parameters​

packet​

ReadPacket

Returns​

Promise<T>

Overrides​

ClientProxy.dispatchEvent


listSchedules()​

listSchedules(): Promise<ScheduleInfo[]>

Defined in: src/client/jetstream.client.ts:251

Every schedule of the target service, declared by its handlers and created by clients.

Returns​

Promise<ScheduleInfo[]>


publish()​

protected publish(packet, callback): () => void

Defined in: src/client/jetstream.client.ts:381

Publish an RPC command and register callback for response.

Core mode: uses nc.request() with timeout. JetStream mode: publishes to stream + waits for inbox response.

Parameters​

packet​

ReadPacket

callback​

(p) => void

Returns​

() => void

Overrides​

ClientProxy.publish


schedule()​

schedule(id, pattern, data, spec): Promise<ScheduleChange>

Defined in: src/client/jetstream.client.ts:236

Create or replace a schedule on the target service. Its ticks go to the target's handler for pattern, which declares schedule in its extras.

An unchanged schedule is left alone, so an interval keeps its phase.

Parameters​

id​

string

One subject token naming the schedule, unique within the target.

pattern​

string

data​

unknown

spec​

ClientScheduleSpec

Returns​

Promise<ScheduleChange>

Throws​

JetstreamScheduleError for an invalid id, pattern or spec, or a server too old for it.


unwrap()​

unwrap<T>(): T

Defined in: src/client/jetstream.client.ts:268

Direct access to the raw NATS connection.

Type Parameters​

T​

T = NatsConnection

Returns​

T

Throws​

Error if not connected.

Overrides​

ClientProxy.unwrap