Data warehouse in the actor's system
I am working on an ack actor based event handling pipeline. I have 3 members for each stage in the pipeline: FilterWorker, EnrichWorker, and ProcessWorker; plus a supervising actor who ensures that events are sent from one step from the pipeline to the next.
During the enrichment phase, I might need to query an external database to get more data, or even create new data that I want to store. For example, the enrichment stage of a web analytics system may want to enrich a click event by a user who clicked and stored that user information in a database.
With this example in mind, I see the following options:
1. Use a singleton; for example the UserStore, which keeps in memory all users collected so far and stores them in the database from time to time; has all the logic to get users who are not yet in memory. Doesn't seem to use a singleton in the actor system (?).
- Use a store actor. Use the tell command to add a new user and ask for it.
Is there a better template for this?
source to share