Pipelines de pedidos
Os pedidos fluem para cobrança, envio e análise, e cada um lê o mesmo stream no próprio ritmo.
Streams de eventos append-only com grupos de consumidores, confirmações e recuperação automática das mensagens que um consumidor deixou para trás ao cair.
O serviço de pedidos anexa um evento e recebe o id de volta.
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.
Os serviços que reagem a eventos precisam de mais do que uma fila. Vários consumidores independentes querem os mesmos eventos, cada grupo de consumidores precisa dividir o trabalho entre instâncias e, quando uma instância morre com mensagens em mãos, alguém precisa perceber e assumi-las.
Um stream é um log append-only. Cada grupo de consumidores o lê de forma independente, entrega cada mensagem a um membro do grupo e a mantém pendente até que esse membro a confirme. XAUTOCLAIM passa as mensagens pendentes há tempo demais para um consumidor saudável.
O serviço de pedidos anexa um evento e recebe o id de volta.
XADD orders * type created order 1182 total 49.00Cobrança e envio têm cada um o próprio grupo, e cada um recebe o evento.
XGROUP CREATE orders billing 0 MKSTREAMUma instância de cobrança lê as mensagens novas do seu grupo, bloqueando até chegar alguma coisa.
XREADGROUP GROUP billing billing-1 COUNT 10 BLOCK 5000 STREAMS orders >Assim que a fatura é criada, a cobrança confirma e a mensagem sai da sua lista de pendentes.
XACK orders billing 1790985600123-0Uma instância de envio morreu segurando mensagens. Depois de 60 segundos ociosas, elas são assumidas por uma instância saudável.
XAUTOCLAIM orders shipping shipping-2 60000 0-0 COUNT 25Os pedidos fluem para cobrança, envio e análise, e cada um lê o mesmo stream no próprio ritmo.
As ações dos usuários são anexadas a um stream e reproduzidas por qualquer serviço que precise do histórico.
As mensagens dos dispositivos ficam em buffer nos streams e são processadas por um grupo de workers que escala com a carga.
As entradas recebem ids ordenados no tempo e podem ser aparadas por tamanho ou idade.
XADDXTRIMCada grupo recebe todas as mensagens e divide o trabalho entre os seus membros.
XGROUPXREADGROUPAs mensagens ficam pendentes até serem confirmadas.
XACKXPENDINGAs mensagens ociosas por tempo demais são assumidas por outro consumidor.
XAUTOCLAIMXCLAIMSim. XRANGE lê qualquer parte do stream por id, e um grupo de consumidores novo pode começar do início.
Apare-o com XTRIM ou com a opção MAXLEN ou MINID do XADD.
O XADD aceita ids de produtor idempotentes (IDMP), então uma publicação repetida não cria uma segunda entrada. Veja a referência do XADD.
O HotKV fala o protocolo Redis, então você pode apontar um cliente existente para ele e executar estes mesmos comandos.