E-mails e SMS transacionais
Mensagens de cadastro, recibo e redefinição são enfileiradas pelo app web e enviadas por um pool de workers.
Filas FIFO que não perdem jobs quando um worker morre, com produtores e consumidores rodando em paralelo.
Qualquer serviço adiciona trabalho sem esperar pelos consumidores.
Uma demonstração animada com comandos reais do HotKV e respostas de exemplo. Clique em qualquer etapa para ir direto a ela. Os comandos e as respostas ficam em inglês, exatamente como você os digita e vê no HotKV.
O trabalho em segundo plano, como e-mails, redimensionamento de imagens e webhooks, precisa de uma fila entre o código que o cria e o código que o executa. Uma fila que perde um job quando um worker cai no meio da tarefa é pior do que nenhuma fila, porque ninguém percebe que o job sumiu.
As listas dão a você uma fila FIFO simples. BLMOVE move cada job para uma lista de processamento no momento em que ele é entregue a um worker, então um job em andamento está sempre armazenado em algum lugar se esse worker desaparecer. Produtores e consumidores são atendidos por worker threads paralelas.
Qualquer serviço adiciona trabalho sem esperar pelos consumidores.
LPUSH queue:emails "{\"to\":\"ada@example.com\",\"tpl\":\"welcome\"}"BLMOVE bloqueia até haver um job disponível e depois o move para uma lista de processamento em uma etapa.
BLMOVE queue:emails queue:emails:processing RIGHT LEFT 0O e-mail foi enviado. O job é removido da lista de processamento.
LREM queue:emails:processing 1 "{\"to\":\"ada@example.com\",\"tpl\":\"welcome\"}"O worker 2 morre no meio do job. O job dele continua na lista de processamento, não se perde.
LRANGE queue:emails:processing 0 -1Um monitor move o job abandonado de volta para a fila, e outro worker o assume.
LMOVE queue:emails:processing queue:emails LEFT RIGHTMensagens de cadastro, recibo e redefinição são enfileiradas pelo app web e enviadas por um pool de workers.
Os uploads entram na fila para gerar miniaturas e transcodificar, e um transcodificador que cai nunca perde um arquivo.
Os webhooks de saída são enfileirados e reenviados sem bloquear a requisição que os disparou.
LPUSH com BRPOP, e os workers dormem até chegar trabalho.
LPUSHBRPOPBLMOVE entrega cada job a uma lista de processamento de forma atômica.
BLMOVELREMProdutores e consumidores são atendidos por worker threads paralelas.
Para confirmações, grupos de consumidores e replay, use streams.
XADDXREADGROUPSe você assume os jobs com BLMOVE, o job fica na lista de processamento. Um monitor pode mover de volta para a fila tudo o que estiver lá há tempo demais.
Não. BRPOP e BLMOVE bloqueiam até chegar um job, com um timeout opcional.
As listas são a fila mais simples. Os streams acrescentam grupos de consumidores, confirmação por mensagem e histórico. Veja o caso de uso de streaming de eventos.
O HotKV fala o protocolo Redis, então você pode apontar um cliente existente para ele e executar estes mesmos comandos.