MQTT (Message Queuing Telemetry Transport) is an open source, lightweight messaging protocol, optimized for high-latency. This protocol provides a scalable and cost-efficient way to connect devices using a publish/subscribe model. A communication system built on MQTT consists of the publishing server, a broker and one or more clients. It is designed for constrained devices and low-bandwidth, high-latency or unreliable networks.
To start building MQTT-based microservices, first install the required package:
To use the MQTT transporter, pass the following options object to the
info Hint The
Transportenum is imported from the
options object is specific to the chosen transporter. The MQTT transporter exposes the properties described here.
Like other microservice transporters, you have several options for creating a MQTT
One method for creating an instance is to use use the
ClientsModule. To create a client instance with the
ClientsModule, import it and use the
register() method to pass an options object with the same properties shown above in the
createMicroservice() method, as well as a
name property to be used as the injection token. Read more about
Other options to create a client (either
@Client()) can be used as well. You can read about them here.
In more sophisticated scenarios, you may want to access more information about the incoming request. When using the MQTT transporter, you can access the
MqttContextare imported from the
To access the original mqtt packet, use the
getPacket() method of the
MqttContext object, as follows:
A subscription may be to an explicit topic, or it may include wildcards. Two wildcards are available,
+ is a single-level wildcard, while
# is a multi-level wildcard which covers many topic levels.