Skip to main content

RpcContext

@horizon-republic/nestjs-jetstream


@horizon-republic/nestjs-jetstream / RpcContext

RpcContext

Defined in: src/context/rpc.context.ts:36

Execution context for RPC and event handlers.

Provides convenient accessors for the NATS message, subject, headers, and JetStream metadata without needing to interact with the raw message directly.

Handlers can also control message settlement via retry and terminate instead of throwing errors.

Example​

@EventPattern('order.process')
async handle(@Payload() data: OrderDto, @Ctx() ctx: RpcContext) {
if (ctx.getDeliveryCount()! >= 3) {
ctx.terminate('Max business retries exceeded');
return;
}
if (!this.isReady()) {
ctx.retry({ delayMs: 5000 });
return;
}
await this.process(data);
}

Extends​

  • BaseRpcContext<[NatsMessage]>

Constructors​

Constructor​

new RpcContext(args): RpcContext

Defined in: node_modules/.pnpm/@[email protected]_@[email protected]_@[email protected]_@nestjs_3a780528f8668c4d537bbbe9dae7e82d/node_modules/@nestjs/microservices/ctx-host/base-rpc.context.d.ts:6

Parameters​

args​

[NatsMessage]

Returns​

RpcContext

Inherited from​

BaseRpcContext<[NatsMessage]>.constructor

Methods​

getCallerName()​

getCallerName(): string | undefined

Defined in: src/context/rpc.context.ts:104

The name of the service that published this message (from x-caller-name header).

Returns​

string | undefined


getDeliveryCount()​

getDeliveryCount(): number | undefined

Defined in: src/context/rpc.context.ts:82

How many times this message has been delivered.

Returns​

number | undefined


getHeader()​

getHeader(key): string | undefined

Defined in: src/context/rpc.context.ts:67

Get a single header value by key.

Parameters​

key​

string

Header name (e.g. 'x-trace-id').

Returns​

string | undefined

Header value, or undefined if the header is missing.


getHeaders()​

getHeaders(): MsgHdrs | undefined

Defined in: src/context/rpc.context.ts:57

Returns​

MsgHdrs | undefined

All NATS message headers, or undefined if none are present.


getMessage()​

getMessage(): NatsMessage

Defined in: src/context/rpc.context.ts:47

Get the underlying NATS message.

Returns​

NatsMessage

JsMsg for JetStream handlers, Msg for Core RPC handlers.


getSequence()​

getSequence(): number | undefined

Defined in: src/context/rpc.context.ts:92

The stream sequence number.

Returns​

number | undefined


getStream()​

getStream(): string | undefined

Defined in: src/context/rpc.context.ts:87

The JetStream stream this message belongs to.

Returns​

string | undefined


getSubject()​

getSubject(): string

Defined in: src/context/rpc.context.ts:52

Returns​

string

The NATS subject this message was published to.


getTimestamp()​

getTimestamp(): Date | undefined

Defined in: src/context/rpc.context.ts:97

The message timestamp as a Date (derived from info.timestampNanos).

Returns​

Date | undefined


isJetStream()​

isJetStream(): this is RpcContext & { getMessage: any }

Defined in: src/context/rpc.context.ts:77

Type guard: returns true when the message is a JetStream message.

Narrows getMessage() return type to JsMsg, giving access to ack(), nak(), term(), and delivery metadata.

Returns​

this is RpcContext & { getMessage: any }


retry()​

retry(opts?): void

Defined in: src/context/rpc.context.ts:117

Signal the transport to retry (nak) this message instead of acknowledging it.

Use for business-level retries without throwing errors. Only affects JetStream event handlers (workqueue/broadcast).

Parameters​

opts?​

Optional delay in ms before redelivery.

delayMs?​

number

Returns​

void

Throws​

Error if terminate was already called.


terminate()​

terminate(reason?): void

Defined in: src/context/rpc.context.ts:137

Signal the transport to permanently reject (term) this message.

Use when a message is no longer relevant and should not be retried or sent to DLQ. Only affects JetStream event handlers (workqueue/broadcast).

Parameters​

reason?​

string

Optional reason for termination (logged by NATS).

Returns​

void

Throws​

Error if retry was already called.