Topic-Specific Rate Limits

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 RateLimitMiddleware

def topic_based_key_generator(context):
    """Generate rate limit keys based on topic patterns"""
    topic = context.get('topic', 'unknown')
    
    # Different limits for different topic patterns
    if topic.startswith('api/admin/'):
        return f"admin_api:{topic}"
    elif topic.startswith('api/user/'):
        return f"user_api:{topic}"
    elif topic.startswith('devices/'):
        return f"device:{topic}"
    else:
        return f"general:{topic}"

# Create rate limiter with custom key generator
topic_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:

Memory Management

Next Steps

Last updated