RpcContext
Defined in: src/context/rpc.context.ts:35
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/@nestjs+microservices@11.1.17_@grpc+grpc-js@1.14.3_@nestjs+common@11.1.17_reflect-metad_7277f1dab133b705fe5da76c655f7d0b/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:111
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:89
How many times this message has been delivered.
Returns
number | undefined
getHeader()
getHeader(
key):string|undefined
Defined in: src/context/rpc.context.ts:70
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:60
Returns
MsgHdrs | undefined
All NATS message headers, or undefined if none are present.
getMessage()
getMessage():
NatsMessage
Defined in: src/context/rpc.context.ts:50
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:99
The stream sequence number.
Returns
number | undefined
getStream()
getStream():
string|undefined
Defined in: src/context/rpc.context.ts:94
The JetStream stream this message belongs to.
Returns
string | undefined
getSubject()
getSubject():
string
Defined in: src/context/rpc.context.ts:55
Returns
string
The NATS subject this message was published to.
getTimestamp()
getTimestamp():
Date|undefined
Defined in: src/context/rpc.context.ts:104
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:80
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:128
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:148
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.