Kolejki priorytetowe, jak sugeruje nazwa, nadają priorytet wiadomościom o wyższym priorytecie do skonsumowania.
Należy pamiętać o kilku kwestiach dotyczących kolejek priorytetowych w RabbitMQ:
- Kolejki priorytetowe działają tylko wtedy, gdy nie ma wystarczającej liczby odbiorców i konsumpcja nie może być wykonana w odpowiednim czasie.
- Kolejki priorytetowe są obsługiwane dopiero po wersji RabbitMQ 3.5.
Kroki korzystania z kolejek priorytetowych RabbitMQ
- Ustaw maksymalny priorytet kolejki.
- Ustaw priorytet wiadomości.
Ustaw maksymalny priorytet kolejki
Podczas deklarowania kolejki, ustaw maksymalny priorytet kolejki poprzez właściwość kolejki (x-max-priority). Maksymalna wartość priorytetu wynosi 255, zaleca się ustawienie go między 1 a 10. Ustawienie w języku Go:
// Właściwości kolejki
props := make(map[string]interface{})
// Ustaw maksymalny priorytet kolejki
props["x-max-priority"] = 10
// Zadeklaruj kolejkę
q, err := ch.QueueDeclare(
"tizi365.hello", // Nazwa kolejki
true, // Trwałość kolejki
false, // Usunięcie po nieużywaniu
false, // Wyłączna
false, // Bez oczekiwania
props, // Ustaw właściwości kolejki
)
Wskazówka: Metoda ustawiania w innych językach jest podobna.
Ustawienie Priorytetu Wiadomości
Ustawienie w języku Go:
err = ch.Publish(
"tizi365", // Wymiana
"", // Klucz routingu
false,
false,
amqp.Publishing{
Priority:5, // Ustaw priorytet wiadomości
DeliveryMode:2, // Tryb dostarczania wiadomości, 1 dla nietrwałych, 2 dla trwałych
ContentType: "text/plain",
Body: []byte(body),
})