Hello,
As you are using the currency code as the actor name you can just use
context.child.
context.child(currency.code).getOrElse(... create a new one ...)
Regards
On Saturday, May 30, 2015 at 2:46:05 PM UTC+2, Guido Medina wrote:
>
> Hi,
>
> I have a method to create an account balance actor per currency for that
> account, I had that on a hash map but I think that if Akka has an internal
> hash map *-concurrent or not-* to keep actor references then why should I
> keep yet another hash map?, I was using a computeIfAbsent(...) on my own
> hash map so I'm wondering if:
>
> 1. Will resolveOne() method wait up to 5 seconds if the actor doesn't
> exist?, I wish not to wait for so long if it really doesn't because such
> actors are children of the supervisor calling the method within
> onReceive(...)
> 2. The following try to resolve one, if it succeed it just forward the
> message else tries to create it and forward the message, if it fails
> creating it after it couldn't resolve it *-unlikely but possible-*, it
> will forward the message via actor selection because another thread *-the
> next call to resolveOne()-* created it.
>
>
> private void applyToAccount(Currency currency, BalanceOperation
> operation) {
> final ActorContext context = context();
> context.actorSelection(currency.code).resolveOne(FIVE_SECONDS).
> onComplete(
> new OnComplete<ActorRef>() {
> @Override
> public void onComplete(Throwable failure, ActorRef balanceRef)
> throws Throwable {
> if (!(failure instanceof ActorNotFound)) {
> // Actor exists, forward the message.
> balanceRef.forward(operation, context);
> } else {
> try {
> // Try to create it and forward the message.
> context.actorOf(balancePersistorProps(currency), currency.
> code).forward(operation, context);
> } catch (Exception e) {
> // It failed creating it so looks the unlikely happened,
> forward the message via actor selection.
> context.actorSelection(currency.code).forward(operation,
> context);
> }
> }
> }
> }, context.dispatcher());
> }
>
> Suggestions are very welcome,
>
> Many thanks,
>
> Guido.
>
--
>>>>>>>>>> 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 http://groups.google.com/group/akka-user.
For more options, visit https://groups.google.com/d/optout.