2016-02-26 9 views
5

Utilizzo di Akka.net con servizi remoti. This article ha la seguente dire sull'utilizzo ActorSelection:Akka.Net Remoting: ActorSelection vs. IActorRef

L'altro momento tendo di utilizzare un ActorSelection Quando sono inizialmente comunicare con un sistema remoto attore.

Quello che non capisco è come convertire quell'ActorSelection iniziale in un IActorRef che posso continuare a usare.

risposta

8

Il modo più semplice è utilizzare il metodo actorSelection.ResolveOne(timeout), che restituirà Task<IActorRef>. L'attività può anche terminare con timeout o ActorNotFoundException nel caso in cui non sia stato trovato alcun attore nel percorso fornito.

Un altro - più attore-idiomatico - è inviare il messaggio Identify(correlationId) alla selezione degli attori. Dovrebbe rispondere con la risposta ActorIdentity(correlationId, actorRef). Siate consapevoli del fatto che potrebbe non rispondere affatto, se non ci fosse nessuno da ascoltare sotto la selezione dell'attrice.

+0

Quindi, in che modo è preferibile in che caso? – Max

+2

La regola generale è che all'interno degli attori preferiamo utilizzare i messaggi rispetto alle attività. Quindi, quando stai risolvendo 'IActorRef' dalla selezione degli attori all'interno di un attore, usa' Identify' e imposta il ricevitore per 'ActorIdentity'. Quando ci si risolve al di fuori del sistema degli attori, usare 'ResolveOne'. – Horusiath

Problemi correlati