🎯 Routing et Topics

Le routing avec topic exchanges permet un contrôle fin du routage des messages basé sur des patterns de routing keys. Ce mécanisme puissant permet de créer des architectures de communication flexibles et évolutives.

🔀 Topic Exchange

# Déclaration topic exchange
channel.exchange_declare(
    exchange='events',
    exchange_type='topic',
    durable=True
)

# Publishing avec routing key hiérarchique
channel.basic_publish(
    exchange='events',
    routing_key='user.profile.updated',
    body=json.dumps(event_data)
)

🎯 Patterns de Routing Key

Conventions de Nommage

user.profile.created     # user domain, profile entity, created action
order.payment.completed  # order domain, payment entity, completed action  
system.health.warning    # system domain, health entity, warning action

Wildcards

# * = exactement un mot
channel.queue_bind(
    exchange='events',
    queue='user_service',
    routing_key='user.*.*'  # Tous les événements user
)

# # = zéro ou plusieurs mots  
channel.queue_bind(
    exchange='events',
    queue='audit_service', 
    routing_key='#.created'  # Tous les événements created
)

💡 Exemples Pratiques

// E-commerce routing
const routingPatterns = {
    'order.*.created': 'inventory_service',    // Nouveau orders
    'order.payment.*': 'accounting_service',   // Tous paiements
    'user.#': 'user_analytics_service',        // Tous événements user
    '*.error': 'error_handler_service'         // Toutes les erreurs
};

Le routing par topics offre une flexibilité maximale pour créer des architectures event-driven sophistiquées.

📝 Testez vos connaissances !

Répondez à 10 questions pour valider ce cours