Complete implementation guide for using MQTT 5.0 protocol features with MQTT X.
mqttx-mqtt5/ ├── SKILL.md # Main skill guide ├── README.md # This file ├── assets/ # Code templates │ ├── mqtt5-basic.go.tmpl # Basic MQTT 5.0 connection │ ├── mqtt5-advanced.go.tmpl # Advanced features (aliases, shared subs) │ └── mqtt5-auth.go.tmpl # Enhanced authentication examples ├── references/ # Documentation │ ├── mqtt5-features.md # Detailed feature reference │ └── mqtt311-vs-mqtt5.md # Protocol comparison guide └── scripts/ # Helper scripts └── check-mqtt5-support.sh # Broker compatibility checker
# Check if your broker supports MQTT 5.0
./scripts/check-mqtt5-support.sh tcp://localhost:1883
# Copy and run the basic template
cp assets/mqtt5-basic.go.tmpl main.go
go run main.go
# Use advanced template for shared subscriptions, topic aliases
cp assets/mqtt5-advanced.go.tmpl main.go
go run main.go
# Enhanced authentication examples (JWT, OAuth 2.0, SHA-256)
cp assets/mqtt5-auth.go.tmpl main.go
go run main.go
mqtt5-features.md:
mqtt311-vs-mqtt5.md:
Use when: Learning MQTT 5.0 basics or simple applications
Use when: Building scalable systems or optimizing bandwidth
Use when: Implementing secure authentication or integrating with auth providers
mqtt5Config := mqttx.DefaultMQTT5Config()
mqtt5Config.SessionExpiry = 30 * time.Minute
mqtt5Config.UserProperties = map[string]string{
"app": "my-app",
"version": "1.0.0",
}
opts := mqttx.DefaultOptions()
opts.WithMQTT5(mqtt5Config)
// Multiple workers subscribe to shared topic
session.SubscribeShared("workers", "tasks/process", handler, 1)
// Messages automatically distributed among workers
jwtProvider := mqttx.NewJWTAuthProvider(jwtToken) authManager := mqttx.NewMQTT5AuthManager(jwtProvider) method, data, _ := authManager.StartAuth() auth := mqttx.NewMQTT5Auth(method, data) opts.WithEnhancedAuth(auth)
./scripts/check-mqtt5-support.sh tcp://broker.example.com:1883
Expected output for full support:
✓ MQTT 5.0 connection successful ✓ User properties supported ✓ Shared subscriptions supported ✓ Session expiry interval supported ✓ Topic aliases supported ✓ Request response info supported ✓ Maximum packet size negotiation supported Success rate: 100%
Each template includes built-in tests:
// Measure bandwidth savings with topic aliases
longTopic := "sensors/building/floor/room/device/metric"
// First publish: full topic
// Subsequent: 2-byte alias (96% reduction)
Template: mqtt5-advanced.go.tmpl
Template: mqtt5-advanced.go.tmpl
Template: mqtt5-auth.go.tmpl
Template: mqtt5-basic.go.tmpl
Check:
Solution:
# Test broker
./scripts/check-mqtt5-support.sh tcp://your-broker:1883
# Or fallback to MQTT 3.1.1
opts.ProtocolVersion = mqttx.MQTT311
Check:
$share/<group>/<topic>Solution:
# Mosquitto: Add to mosquitto.conf
allow_shared_subscriptions true
# EMQX: Usually enabled by default
Check:
Solution:
// Check authentication state
if authManager.State() == mqttx.AuthStateFailed {
log.Println("Authentication failed")
}
/workspace/mqtt5.go - MQTT 5.0 configuration/workspace/mqtt5_auth.go - Enhanced authentication/workspace/types.go - MQTT5Options structure/workspace/examples/mqtt5_auth/main.go - Complete authentication exampleFound an issue or have a suggestion? The skill documentation and templates can be improved based on real-world usage.
Part of MQTT X library. See main repository for license information.