Prioritätsqueues geben, wie der Name schon sagt, den Nachrichten mit höherer Priorität Vorrang beim Verbrauch.
Wichtige Punkte für RabbitMQ-Prioritätsqueues:
- Prioritätsqueues wirken sich nur aus, wenn es nicht genügend Verbraucher gibt und der Verbrauch nicht zeitnah erfolgen kann.
- Prioritätsqueues werden erst ab RabbitMQ-Version 3.5 unterstützt.
Schritte zur Verwendung von RabbitMQ-Prioritätsqueues
- Setzen Sie die maximale Priorität der Queue.
- Legen Sie die Priorität der Nachricht fest.
Setzen Sie die maximale Priorität der Queue
Legen Sie beim Deklarieren der Queue die maximale Priorität der Queue über die Queue-Eigenschaft (x-max-priority) fest. Der maximale Wert für die Priorität beträgt 255, und es wird empfohlen, sie zwischen 1 und 10 festzulegen. Einstellung in Golang:
// Queue-Eigenschaften
props := make(map[string]interface{})
// Setzen Sie die maximale Priorität der Queue
props["x-max-priority"] = 10
// Deklarieren der Queue
q, err := ch.QueueDeclare(
"tizi365.hallo", // Queue-Name
true, // Queue haltbar
false, // Löschen, wenn nicht verwendet
false, // Exklusiv
false, // Kein Warten
props, // Queue-Eigenschaften setzen
)
Tipp: Die Einstellungsmethode in anderen Sprachen ist ähnlich.
Setzen der Nachrichtenpriorität
Einstellung in Golang:
err = ch.Publish(
"tizi365", // Exchange
"", // Routing-Schlüssel
false,
false,
amqp.Publishing{
Priority:5, // Setzen der Nachrichtenpriorität
DeliveryMode:2, // Nachrichtenzustellmodus, 1 für nicht beständig, 2 für beständig
ContentType: "text/plain",
Body: []byte(body),
})