Les files d'attente prioritaires, comme leur nom l'indique, donnent la priorité aux messages ayant une priorité plus élevée pour être consommés.
Points à noter concernant les files d'attente prioritaires de RabbitMQ :
- Les files d'attente prioritaires ne prennent effet que lorsqu'il y a un nombre insuffisant de consommateurs et que la consommation ne peut se faire en temps voulu.
- Les files d'attente prioritaires ne sont prises en charge qu'à partir de la version 3.5 de RabbitMQ.
Étapes pour utiliser les files d'attente prioritaires de RabbitMQ
- Définir la priorité maximale de la file d'attente.
- Définir la priorité du message.
Définir la Priorité Maximale de la File d'Attente
Lors de la déclaration de la file d'attente, définissez la priorité maximale de la file d'attente via la propriété de la file (x-max-priority). La valeur maximale pour la priorité est 255, et il est recommandé de la définir entre 1 et 10. Exemple en Golang :
// Propriétés de la file
props := make(map[string]interface{})
// Définir la priorité maximale de la file d'attente
props["x-max-priority"] = 10
// Déclarer la file d'attente
q, err := ch.QueueDeclare(
"tizi365.hello", // Nom de la file d'attente
true, // File d'attente durable
false, // Supprimer lorsqu'inutilisée
false, // Exclusif
false, // No-wait
props, // Définir les propriétés de la file
)
Conseil : La méthode de configuration dans d'autres langages est similaire.
Définir la Priorité du Message
Exemple en Golang :
err = ch.Publish(
"tizi365", // Échange
"", // Clé de routage
false,
false,
amqp.Publishing{
Priority:5, // Définir la priorité du message
DeliveryMode:2, // Mode de livraison du message, 1 pour non persistant, 2 pour persistant
ContentType: "text/plain",
Body: []byte(body),
})