RabbitMQ - Solution Message-Oriented Middleware
Types de routage
Introduction
Le modèle AMQP comporte quatre types d'exchange, qui conduisent à quatre types de routage différents. Ils sont les suivants :
- Direct exchange
- Fanout exchange
- Topic exchange
- Header exchange
La motivation d'un choix pour l'un de ces types se fait en fonction de l'objectif de chacun, dont trois sont décrits précisément ci-dessous.
Direct
Le type d'exchange direct caractérise typiquement une relation de communication 1:1 ou encore unicast,
c'est-à-dire que pour un message envoyé, un unique consommateur recevra ce message.
Le fonctionnement de cet exchange est simple. Le message, envoyé par le producteur au broker, contient
une routing key. Cette clé est une simple string qui indique le type de routage. Dans ce type d'exchange, le
binding spécifie une binding key, et alors l'exchange aiguille le message à une de ces queues attachées, si
la routing key correspond à l'identique à la binding key.
Fanout
Le type d'exchange fanout caractérise typiquement une relation de communication 1:n ou encore
broadcast, c'est-à-dire que pour un message envoyé, tous les consommateurs recevront ce message.
Ce type d'exchange ne définit pas de routing key au sein de ses messages. L'exchange aiguille donc les
messages à toutes les queues auxquelles il est attaché.
Topic
Le type d'exchange topic caractérise typiquement une relation de communication 1:n (voire n:m) ou
encore multicast, c'est-à-dire que pour un message envoyé, plusieurs consommateurs recevront ce message.
Le fonctionnement de cet exchange est similaire à celui du direct exchange, sauf que les bindings keys
sont représentées par des caractères wildcard ("*","#"). Le routage des messages par l'exchange se fait encore par
la correspondance entre la routing key et la binding key. Au contraire du principe du direct exchange, un message
peut être stocké dans plusieurs queues grâce à l'utilisation de wildcard.