Quello che ho adesso:
- Una tabella con molti record.
- Circa 200 utenti possono selezionare un record in base ad alcune regole basate sui dati di ciascun record.
- C'è un'alta probabilità che 2 o più utenti selezionino lo stesso record.
- Un utente aggiorna il record e lo salva di nuovo nel db. Quel record non verrà più selezionato (soft cancellato).
- Il blocco ottimistico è stato provato e le prestazioni non sono state accettate dal PO.
- La nostra soluzione era una volta che un utente seleziona un record aggiorna un campo "lock" nel record.
I problemi:
- Le collisioni si verificano ancora mentre gli utenti continuano a selezionare lo stesso record. Devo impedire a 2 utenti di selezionare lo stesso record.
- Abbiamo bisogno di rilasciare il blocco manualmente se l'utente non intraprende alcuna azione per un lungo periodo.
Ho cercato e sembra che Amazon SQS fosse una buona soluzione, ma ha avuto un problema che non riesco a cercare nella coda.
C'è una buona tecnologia per risolvere il mio problema? Devo implementare una coda ricercabile in cui i messaggi sono bloccati quando selezionato e il blocco scade dopo un certo periodo di tempo.