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
- Definir a prioridade máxima da fila.
- 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),
})