Abbiamo un sistema che pubblica richieste per l'elaborazione in una tabella di database. Abbiamo anche un'attività pianificata che viene eseguita ogni minuto e cerca richieste in sospeso in quella tabella. Se viene trovata una richiesta, l'attività la elabora, la contrassegna come completa, quindi preleva la successiva richiesta in sospeso, se presente, e così via. Se non ci sono più richieste, l'attività termina. Un'istanza dell'attività successiva viene avviata all'inizio del minuto successivo.
Tutto funziona bene, ma ora abbiamo il requisito di elaborare tutte le richieste non appena vengono aggiunte alla tabella del database, ad esempio con un ritardo minimo. Ciò significa che dobbiamo essere in grado di elaborarli in parallelo, non uno alla volta.
Sto cercando idee su come implementarlo. Un approccio consisterebbe nell'avere un thread di monitoraggio nell'attività che richiede la query periodicamente alla tabella per nuove richieste e quando viene trovata una nuova richiesta, include un thread di elaborazione per tale richiesta. Oppure, adottando un approccio simile, suddividere l'attività in due file eseguibili: uno per il monitoraggio e un altro per l'elaborazione. Il primo inizierà istanze di quest'ultimo su richiesta.
Qualche idea?