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

  1. Ustaw maksymalny priorytet kolejki.
  2. 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),
	})