Skip to main content

Feature

YedMQ focuses on a practical MQTT broker core for distributed IoT systems. The items below describe the current implementation rather than planned future scope.

MQTT broker capabilities

  • MQTT v3.1.1
  • MQTT v5.0 common client messaging path
  • QoS 0, 1, and 2
  • Retained messages
  • Last will and testament
  • Persistent sessions
  • MQTT 5.0 session expiry and message expiry
  • Shared subscriptions with $share/<group>/<filter>
  • $SYS topic publishing with ASCII decimal numeric payloads
  • Configurable maximum message size

Network listeners

  • MQTT over TCP
  • MQTT over TLS
  • MQTT over WebSocket
  • MQTT over Secure WebSocket
  • REST management API

Multi-tenant behavior

  • Tenant identity can be assigned by the authentication plugin
  • Sessions, topics, retained messages, and client identities are isolated per tenant
  • Connections without an assigned tenant use the default public tenant

Cluster and high availability

  • Raft-based cluster coordination
  • Dedicated raft groups for topic metadata, session actor mapping, and session state
  • bootstrap and join startup modes for first-node and scale-out workflows
  • REST endpoints for learner addition, membership changes, metrics, and raft initialization

Plugin system

  • Plugin packages live in subdirectories under plugin.dir
  • Plugins are launched as child processes
  • Communication uses a local socket plus Protobuf messages
  • Hook chains are ordered by priority
  • Broker-integrated request hooks cover authentication, authorization, OnMessagePublish, and OnMessageSubscribe
  • OnMessagePublish can reject a publish or rewrite topic, payload, retain flag, and dup flag before retain storage, QoS state persistence, and routing
  • OnMessageSubscribe can reject a topic filter or downgrade the final granted QoS before subscription storage and retained-message delivery
  • Event-style hooks are available for disconnect and message/subscription lifecycle notifications

Operations and management

  • Basic-auth protected REST API
  • Plugin list, client list, topic list, retained message, and system information endpoints
  • Node-local /metrics endpoint for OpenMetrics-style broker counters
  • Cluster membership and raft metrics endpoints
  • Configurable log level and listener rate limits

Not implemented yet

  • MQTT 5.0 enhanced authentication, Topic Alias, and Subscription Identifier
  • Disk-backed message persistence
  • Built-in global cluster metrics aggregation
  • Web UI dashboard