Pattern per attivare una transazione in futuro

0

Esiste un modello per gestire il seguente scenario:

Ho un insieme di transazioni commerciali catturate e archiviate in un database mongoDB che deve essere eseguito in una data futura che viene anche memorizzata nel database. Mi piacerebbe creare un processo che si attiva regolarmente, analizzare il database e raccogliere le transazioni che devono essere eseguite.

So che questo può essere fatto con un processo come un cron job che si risveglia periodicamente. Questo va bene se si esegue solo un'istanza del processo, ma se ho più di un processo in esecuzione, è probabile che ci sia una duplicazione nelle transazioni elaborate.

I tuoi suggerimenti e i tuoi suggerimenti sono molto apprezzati.

Grazie, Dex

    
posta DexF 25.10.2017 - 20:04
fonte

1 risposta

1

Se hai più processi, ogni processo deve bloccare le righe che desidera elaborare per primo.

UPDATE [table] set lockedby=@lockedby, lockedon=@lockedon WHERE lockedby IS NULL LIMIT [n]

Quindi seleziona le righe che erano appena bloccate. Ogni processo dovrebbe avere un unico lockedby. Al termine, elimina le righe.

Uno avrà bisogno di un processo di sweeper per sbloccare tutte le file che sono state bloccate per un lungo periodo di tempo a causa di un processo bloccato o bloccato in modo che un altro worker proces possa elaborarle.

Questo è solitamente definito blocco pessimistico.

    
risposta data 25.10.2017 - 20:41
fonte

Leggi altre domande sui tag