Salve, ho intenzione di condividere con voi un requisito ed eventuali soluzioni.
Il requisito è il seguente:
è necessario gestire l'operatività di una campagna di sensibilizzazione (l'obiettivo di una campagna è di inviare messaggi, SMS/EMail) utilizzando strumenti appositi.
La gestione dell'operatività di una campagna (per semplicità da adesso dirò campagna) consiste nel far partire un "processo" che esegue il seguente algoritmo:
0 i=1
1 preleva l'i-esimo sottoinsieme di destinatari
2 si il sottoinsieme non è vuoto
3 per ogni destinatario
4 invia il messaggio al destinatario
5 i = i + 1
5 riparti dal punto 1
in pratica si prelevano a piccole quantità un set di destinatari, e per quel sottoinsieme, si inviano singolarmente i messaggi.
Una campagna può essere messa in pausa e fatta ripartire, semplicemente cambiando lo stato nel database.
Il sistema deve eseguire più campagne contemporaneamente.
Il sistema deve garantire che, in caso di interruzioni, sarà possibile ripristinare la campagna dal punto in cui si è fermata.
Il contesto tecnico relativo all'implementazione è Java con Spring Boot.
HO pensato ad una soluzione che prevedeva l'utilizzo di Spring Batch, dove per ogni batch intendevo gestire una campagna, ma mi sono arreso quando ho
cercato di rendere un ItemReader parametrico, nel senso che ogni batch , essendo dedicato ad una apposita campagna, doveva avere un Reader appositamente configurato con l'id della campagna.
Ho pensato poi invece ad una soluzione che prevedeva un pool di thread (ThreadPoolTaskScheduler) governati appunti da uno scheduler che ogni tot controlla se ci sono
campagne da eseguire e le esegue.
HO molti dubbi e vorrei comunciare a confrontarmi con qualcuno che ha voglia di farlo.
Grazie in anticipo.
Il requisito è il seguente:
è necessario gestire l'operatività di una campagna di sensibilizzazione (l'obiettivo di una campagna è di inviare messaggi, SMS/EMail) utilizzando strumenti appositi.
La gestione dell'operatività di una campagna (per semplicità da adesso dirò campagna) consiste nel far partire un "processo" che esegue il seguente algoritmo:
0 i=1
1 preleva l'i-esimo sottoinsieme di destinatari
2 si il sottoinsieme non è vuoto
3 per ogni destinatario
4 invia il messaggio al destinatario
5 i = i + 1
5 riparti dal punto 1
in pratica si prelevano a piccole quantità un set di destinatari, e per quel sottoinsieme, si inviano singolarmente i messaggi.
Una campagna può essere messa in pausa e fatta ripartire, semplicemente cambiando lo stato nel database.
Il sistema deve eseguire più campagne contemporaneamente.
Il sistema deve garantire che, in caso di interruzioni, sarà possibile ripristinare la campagna dal punto in cui si è fermata.
Il contesto tecnico relativo all'implementazione è Java con Spring Boot.
HO pensato ad una soluzione che prevedeva l'utilizzo di Spring Batch, dove per ogni batch intendevo gestire una campagna, ma mi sono arreso quando ho
cercato di rendere un ItemReader parametrico, nel senso che ogni batch , essendo dedicato ad una apposita campagna, doveva avere un Reader appositamente configurato con l'id della campagna.
Ho pensato poi invece ad una soluzione che prevedeva un pool di thread (ThreadPoolTaskScheduler) governati appunti da uno scheduler che ogni tot controlla se ci sono
campagne da eseguire e le esegue.
HO molti dubbi e vorrei comunciare a confrontarmi con qualcuno che ha voglia di farlo.
Grazie in anticipo.