Kind: Class
Source: packages/microservices/ctx-host/mqtt.context.ts
Part of: Microservices
MqttContext provides metadata for an incoming MQTT message handled by a NestJS microservice. It exposes the MQTT topic and the raw MQTT packet so message handlers can inspect routing information, QoS, headers, and other transport-level details.
Extends: BaseRpcContext
Methods
| Method | Signature | Returns |
|---|---|---|
getTopic | getTopic() | void |
getPacket | getPacket() | void |
Diagram
mermaidgraph LR Client[MQTT Client] --> Broker[MQTT Broker] Broker --> Server[NestJS MQTT Server] Server --> Handler[Message Handler] Server --> Context[MqttContext] Context --> Topic[getTopic()] Context --> Packet[getPacket()] Handler --> Context
Usage
tsimport { Controller } from '@nestjs/common';
import { Ctx, MessagePattern, MqttContext } from '@nestjs/microservices';
@Controller()
export class DeviceController {
@MessagePattern('devices/+/status')
handleStatusUpdate(
payload: { online: boolean },
@Ctx() context: MqttContext,
) {
const topic = context.getTopic();
const packet = context.getPacket();
console.log(`Received message on topic: ${topic}`);
console.log(`QoS level: ${packet.qos}`);
return { received: true, online: payload.online };
}
}
AI Coding Instructions
- Use
@Ctx() context: MqttContextin MQTT@MessagePattern()handlers when transport metadata is required. - Call
getTopic()to inspect the original MQTT topic, especially when using wildcard topic patterns. - Call
getPacket()for MQTT-specific metadata such as QoS, retain flags, duplicate delivery status, and packet properties. - Treat the packet as transport metadata; keep business logic focused on the message payload whenever possible.
- Ensure handlers are configured under a NestJS microservice using the MQTT transport before relying on
MqttContext.
Used by
1 reference from 1 file. Each is a place in this repository where the symbol is actually used — go read one rather than trusting an example.
Imported by (1)
MqttController—integration/microservices/src/mqtt/mqtt.controller.ts:16
Was this page helpful?