Configure different rate limits for different topic patterns to provide fine-grained control over message processing rates.
Overview
Topic-specific rate limiting allows you to set different limits based on MQTT topic patterns, enabling you to:
Apply stricter limits to sensitive endpoints
Allow higher throughput for bulk data endpoints
Customize limits based on topic hierarchy
Implement tiered rate limiting strategies
Basic Topic-Specific Configuration
Using Custom Key Generators
from app.middleware.rate_limit import RateLimitMiddlewaredeftopic_based_key_generator(context):"""Generate rate limit keys based on topic patterns""" topic = context.get('topic','unknown')# Different limits for different topic patternsif topic.startswith('api/admin/'):returnf"admin_api:{topic}"elif topic.startswith('api/user/'):returnf"user_api:{topic}"elif topic.startswith('devices/'):returnf"device:{topic}"else:returnf"general:{topic}"# Create rate limiter with custom key generatortopic_rate_limiter =RateLimitMiddleware(max_requests=100,window_seconds=60,key_generator=topic_based_key_generator)
Topic Pattern Middleware
Create a specialized middleware for topic-specific limits:
Advanced Topic Patterns
Hierarchical Rate Limiting
Dynamic Topic Configuration
Topic-Specific Use Cases
IoT Device Management
API Versioning
Multi-Tenant Applications
Configuration Management
Database-Driven Configuration
Configuration File Management
Testing Topic-Specific Limits
Unit Testing
Integration Testing
Performance Considerations
Key Generation Efficiency
Topic-specific rate limiting can generate many different keys. Consider: