Skip to content

Mqtt Persist Clean

DodaTech 1 min read

In this tutorial, you'll learn about MQTT Clean Session Clears Queued Messages. We cover key concepts, practical examples, and best practices.

The Problem

Setting clean session to true drops offline queued messages.

Quick Fix

Wrong

client.connect({ clean: true })  # Never use clean for critical data
Any message published while offline is permanently lost.
// Use clean session with care
function connectWithSession(clientId) {
  const options = {
    clientId: clientId,
    clean: false,  // Keep session for offline message queuing
    reconnectPeriod: 10000
  }
  
  // Only use clean: true for stateless/transient clients
  // e.g., mobile apps, short-lived sensors
  if (isTransientDevice) {
    options.clean = true
  }
  
  return mqtt.connect('mqtt://broker:1883', options)
}

// On reconnect with clean=false
client.on('connect', (connack) => {
  if (connack.sessionPresent) {
    console.log('Receiving offline queued messages...')
  }
})
Offline messages queued at QoS 1/2 are delivered on reconnect (clean=false).

Prevention

clean = true = start fresh, no session persistence. clean = false = resume previous session. For devices that must not miss messages, use clean = false. For transient data (current temperature), clean = true is fine. MQTT 5.0 uses Session Expiry Interval instead of Clean Session flag.

DodaTech engineers apply these same patterns across Doda Browser, DodaZIP, and Durga Antivirus Pro for production IoT reliability.

FAQ

### How many messages can be queued offline?

Limited by broker config. EMQX: queue.deliver_limit = 1000 messages by default. Excess messages are dropped.

When should I use clean = true?

One-shot sensors, mobile apps with data every few minutes, devices where offline messages have no value.

Does clean session affect will messages?

No. Will messages are independent of session persistence. Will publishes on abnormal disconnect regardless of clean flag.

Built by the developers of DodaTech

Doda Browser, DodaZIP & Durga Antivirus Pro