Im Moment läuft unser ASF-Cluster:
Wir testen Application Insights und können unbehandeltes Fehler-Tracking wie ihre Dokumente einrichten hier haben für unser Web-API-Projekt.
Problem ist, ich möchte das auch für unser Actor-Projekt.
Gibt es einen globalen Ort, um unbehandelte Fehler in einem Actor zu erfassen? Ich weiß, dass es neu ist, und vielleicht kann ich deswegen keine Dokumentation finden.
Im Moment mache ich das in jeder Schauspieler-Methode, aber scheint keine großartige Lösung zu sein:
%Vor%Sie haben ein paar Optionen:
Akteure haben einen integrierten ETW-Anbieter ( Microsoft-ServiceFabric-Actors
) mit einem ActorMethodThrewException
-Ereignis. Sie können entweder:
EventListener
, um die in Bearbeitung befindlichen Ereignisse zu hören und sie an App Insights weiterzuleiten (etwas weniger zuverlässig, aber einfacher) Verwenden Sie ein benutzerdefiniertes ActorServiceRemotingDispatcher
, das die Klasse ist, die für das Versenden von Operationen an die Aktoren zuständig ist
Um diese Klasse zu verwenden, müssen Sie eine benutzerdefinierte ActorService
-Klasse erstellen und die CreateServiceReplicaListeners
-Methode überschreiben. Beachten Sie, dass dies ActorRemotingProviderAttribute
s überschreibt, die Sie möglicherweise verwenden.
Randnotizen:
IServiceRemotingClientFactory
, um sie hinzuzufügen) ServiceRemotingDispatcher
) Nein, es gibt heute keinen globalen Ort, an dem Ausnahmen von einem Akteur im Actor-Framework ausgelöst werden können. Das Framework selbst fängt Ausnahmen ab, die von Methoden ausgelöst werden, die von der Actor-Laufzeit verwaltet werden - dies sind Ihre Aktor-Interface-Methoden (die von ActorProxy aufrufbar sind), Timer-Callbacks, Erinnerungs-Callbacks und Basis-Actor-Overrides wie OnActivateAsync - aber sie werden nicht durch die Aktor API offengelegt.
Tags und Links asp.net-web-api .net c# azure-service-fabric