Problema:
- Sto cercando di progettare un sistema che raccolga le richieste dei clienti in tempo reale e registrarli in un database. Ad esempio: richiesta a acquista un oggetto.
- Il cliente ottiene quindi un ID di richiesta univoco per la sua richiesta e anche viene chiesto di attendere "X" giorni perché la richiesta è in fase di elaborazione.
- Quindi il sistema avvisa i fornitori degli articoli raggruppando tutti questi elementi richieste in un'unica email periodicamente (diciamo 4 ore).
- I fornitori di articoli aggiornano gli elementi nel loro repository e li pubblicano clienti. E poi il cliente riceve una notifica dai fornitori di articoli hanno risposto per la sua richiesta.
Design:
I'm thinking of using a workflow based system for this use case. With following components (high level) -
Synchronous API:
- Receive request from customer.
- Record the request in the database.
- Also start an asynchronous workflow, return request id as a response.
Workflow does the following :
Workflow Step 1:
- Get the list of item providers
- Notify them
Workflow Step 2: (This workflow steps gets executed after "X" days)
- Send a response email back to the customer
But I'm having hard time to support the batching use-case. Is there any way I can efficiently batch the customer requests and send notification every 4 hours without having to write a cron job separately?
Apprezzerei qualsiasi suggerimento / aiuto su questo.