RabbitMQ: Dica para construir um programador de consumidor

RabbitMQ e quaisquer servidores de mensagens são ótimos.
Mas como você consegue iniciar um consumidor quando é necessário? Você não pode manter todo tipo de consumidor vivo para sempre! Esperançosamente, RabbitMQ fornece uma API integrada que pode ajudar a resolver o problema!

curl -i -u guest:guest http://localhost:15672/api/queues/your_vhost

Esta api retorna um json de itens contendo, entre outros:

{ "name" : "generateThumbnails", "consumers": 3, "messages_ready" : 23 }

Ao chamar esta api a cada minuto (tarefa Cron?), Você poderá saber quando uma fila tem mensagens esperando para serem consumidas sem nenhum consumidor para tratá-las, a partir daí você só terá que saber como iniciar um consumidor, com base no nome da fila.

Um recurso adicional para seu agendador: ao iniciar um consumidor, você pode incluir um mecanismo para limitar a vida do seu consumidor:

  • Máximo de mensagens a serem tratadas
  • Duração máxima do consumidor (não execute por mais de 2 horas, não importa quantas mensagens sejam tratadas)
  • ou ambos 🙂

Isso deve levar você a uma solução de agendador de consumidor eficiente 🙂