Skip to content

MqttContext

reference
1 min readUpdated

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

MethodSignatureReturns
getTopicgetTopic()void
getPacketgetPacket()void

Diagram

mermaid
graph 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

ts
import { 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: MqttContext in 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)

  • MqttControllerintegration/microservices/src/mqtt/mqtt.controller.ts:16

Was this page helpful?

Download as PDF
MqttContext — NestJS head-to-head