Wzorzec inbox (idempotentny konsument)
Konsument zapisuje id każdej przetworzonej wiadomości w tej samej transakcji co własną zmianę i pomija każde id, które już widział.
To odbiorcza połowa wzorca outbox. Skoro dostarczenie jest co najmniej raz, to samo zdarzenie może przyjść dwa razy; tabela inbox z unikalnym ograniczeniem na id wiadomości zamienia drugie dostarczenie w nic nierobienie. Alternatywa to operacja z natury idempotentna, np. „ustaw status na opłacone” zamiast „dodaj 100 do salda”.
Powiązane hasła
- Idempotentność (idempotency key): Operacja jest idempotentna, jeśli wykonana dwa razy daje ten sam efekt co raz. Ponowienia stają się bezpieczne.
- Wzorzec outbox (transactional outbox): Zapisanie zdarzenia w tabeli outbox w tej samej transakcji bazy co sama zmiana, a potem osobne opublikowanie go w brokerze.
- Dostarczenie dokładnie raz (exactly-once): Obietnica, że każda wiadomość zadziała raz; w praktyce dostarczenie co najmniej raz plus przetwarzanie, które ignoruje duplikaty.
