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

  1. Setzen Sie die maximale Priorität der Queue.
  2. 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),
	})