Filas de prioridade, como o nome sugere, dão prioridade às mensagens com maior prioridade para serem consumidas.

Pontos a serem observados para filas de prioridade no RabbitMQ:

  • Filas de prioridade só entram em ação quando há consumidores insuficientes e o consumo não pode ser feito de maneira oportuna.
  • Filas de prioridade são suportadas apenas após a versão 3.5 do RabbitMQ.

Passos para usar as Filas de Prioridade do RabbitMQ

  1. Definir a prioridade máxima da fila.
  2. Definir a prioridade da mensagem.

Definir a Prioridade Máxima da Fila

Ao declarar a fila, defina a prioridade máxima da fila por meio da propriedade da fila (x-max-priority). O valor máximo para a prioridade é 255, e é recomendável definir entre 1 e 10. Configuração em Golang:

	// Propriedades da fila
	props := make(map[string]interface{})
	// Definir a prioridade máxima da fila
	props["x-max-priority"] = 10

// Declarar a fila
q, err := ch.QueueDeclare(
	"tizi365.hello", // Nome da fila
	true,  // Durável
	false, // Excluir quando não utilizada
	false, // Exclusiva
	false, // Sem espera
	props, // Definir propriedades da fila
)

Dica: O método de configuração em outras linguagens é semelhante.

Definir a Prioridade da Mensagem

Configuração em Golang:

err = ch.Publish(
	"tizi365",     // Troca
	"", // Chave de roteamento
	false,
	false,
	amqp.Publishing{
		Priority:5, // Definir a prioridade da mensagem
		DeliveryMode:2,  // Modo de entrega da mensagem, 1 para não persistente, 2 para persistente
		ContentType: "text/plain",
		Body:        []byte(body),
	})