Esiste un modello standard per gestire le eccezioni all'interno degli attori in Akka.NET?Come gestire le eccezioni all'interno dell'attore?
Ho visto alcuni modelli per creare supervisori, ma sembra che lo SupervisorStrategy
sia un modo per gestire le cose che non possono essere risolte dall'attore.
Ho un attore che riceve molti dati e deve memorizzarlo in un server esterno. Il database esterno potrebbe essere irraggiungibile. Se lo è, il server potrebbe essere riavviato o la rete potrebbe essere inattiva. Non ho bisogno di riavviare l'attore o altro, voglio solo notificare al mittente alcune informazioni su ciò che sta accadendo, in modo che possa mantenere il messaggio su disco e riprogrammare per dopo.
Il mittente non è un genitore di questo attore che si collega al database. Devo creare un supervisore solo per gestire anche questo? O dovrei incapsulare i miei gestori di ricezione nei blocchi try/catch e usare semplicemente Tell
per notificare ai mittenti una risposta personalizzata come se fosse un messaggio normale?
So che esiste una classe Failure
, ma non sono sicuro di doverlo usare per questa situazione.
La risposta di Roger è corretta, ma volevo collegarmi a una spiegazione dettagliata di come la supervisione gerarchica e il pattern del kernel di errore funzionino entrambi in Akka.NET: http://petabridge.com/blog/how-actors-recover-from -failure-hierarchy-and-supervisione/ – Aaronontheweb