Hello All
Wanted to get a bit of advice regarding following usecase:
I have local ActorSystem that handles messages with some key inside. Every 
such message causes mutation of db state by the key: read old value by key, 
compute new state given message, write new value to the db.

To guarantee consistent update per each key I thought of spliting 
processing of incoming messages by ConsistentHashingPool, so that all 
messages with same key will be handled by the same child actor. Number of 
children will give me sort of partitioning of key-set into finite number of 
actors, it will provide concurrency of updates across keys from different 
partitions too. Suppose I can't use akka-persistence module and need to 
maintain "state" inside this db.

Now concerning implementation of update itself: if I wrap processing in 
some future (so that actor won't be blocked to read from db and to write to 
db) and then pipe the result to the sender I might break the order of 
processing within same key(e.g. when update logic running in future for 
some msg is not yet finished write to db, the next msg will be taken from 
mailbox by actor and will submit another processing that might interleave 
with the first one), so I found technique of becoming "unresponsive" and 
stashing all messages and then, when future completes unbecoming and 
unstashing all messages(from here 
http://chariotsolutions.com/blog/post/order-chaos-maintaining-ordered-processing-messages-akka-actors/)

On the other hand, I'll need some thread pool anyway for those 
futures(since reads/writes are blocking), so maybe just doing this blocking 
work inside actor and configuring it with custom dispatcher will give same 
effect, while being more simple solution

thanks in advance
Igor

-- 
>>>>>>>>>>      Read the docs: http://akka.io/docs/
>>>>>>>>>>      Check the FAQ: 
>>>>>>>>>> http://doc.akka.io/docs/akka/current/additional/faq.html
>>>>>>>>>>      Search the archives: https://groups.google.com/group/akka-user
--- 
You received this message because you are subscribed to the Google Groups "Akka 
User List" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/akka-user.
For more options, visit https://groups.google.com/d/optout.

Reply via email to