Skip to main content

Crate mockforge_mqtt

Crate mockforge_mqtt 

Source
Expand description

MQTT protocol support for MockForge

This crate provides a complete MQTT 3.1.1 broker implementation for IoT and pub/sub testing scenarios.

§Features

  • Full MQTT 3.1.1 Protocol Support: Handles all control packet types including CONNECT, PUBLISH, SUBSCRIBE, and their acknowledgments
  • QoS 0, 1, 2 Support: Fire-and-forget, at-least-once, and exactly-once delivery
  • Session Management: Clean and persistent sessions with subscription restoration
  • Topic Wildcards: Supports + and # wildcards for flexible subscriptions
  • Retained Messages: Messages are stored and delivered to new subscribers

§Metrics and Observability

The MQTT broker includes built-in metrics collection for monitoring:

  • Connection counts (total and active)
  • Message publish/delivery rates
  • Subscription tracking
  • QoS level distribution
  • Error rates and latency

Use MqttMetrics to collect metrics and MqttMetricsExporter to export in Prometheus format.

§Usage

use mockforge_mqtt::{MqttConfig, start_mqtt_server};

#[tokio::main]
async fn main() {
    let config = MqttConfig::default();
    start_mqtt_server(config).await.expect("Failed to start MQTT server");
}

Re-exports§

pub use broker::MqttBroker;
pub use broker::MqttConfig;
pub use fixtures::AutoPublishConfig;
pub use fixtures::MqttFixture;
pub use fixtures::MqttFixtureRegistry;
pub use fixtures::MqttResponse;
pub use metrics::MqttMetrics;
pub use metrics::MqttMetricsExporter;
pub use metrics::MqttMetricsSnapshot;
pub use protocol::ConnackCode;
pub use protocol::ConnackPacket;
pub use protocol::ConnectPacket;
pub use protocol::Packet;
pub use protocol::PacketDecoder;
pub use protocol::PacketEncoder;
pub use protocol::ProtocolError;
pub use protocol::PublishPacket;
pub use protocol::QoS as ProtocolQoS;
pub use protocol::SubackPacket;
pub use protocol::SubackReturnCode;
pub use protocol::SubscribePacket;
pub use protocol::UnsubscribePacket;
pub use server::start_mqtt_dual_server;
pub use server::start_mqtt_server;
pub use server::start_mqtt_server_with_metrics;
pub use server::start_mqtt_tls_server;
pub use server::MqttServer;
pub use session::SessionManager;
pub use spec_registry::MqttSpecRegistry;
pub use tls::create_tls_acceptor;
pub use tls::create_tls_acceptor_with_client_auth;
pub use tls::TlsError;
pub use topics::TopicTree;

Modules§

broker
fixtures
metrics
Metrics and monitoring for MQTT broker operations
protocol
MQTT 3.1.1 Protocol packet parsing and serialization
qos
server
MQTT server implementation using tokio TCP listener
session
MQTT Session Management
spec_registry
tls
TLS support for MQTT connections
topics