Azure-Dienst-Fabric-Akteure - nicht behandelte Ausnahmen?

8

Im Moment läuft unser ASF-Cluster:

  • Web-API-Projekt - staatenlos und öffentlichkeitswirksam
  • Actor-Projekt - meist volatil, speichert Daten im Speicher, die von bestimmten APIs verwendet werden

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%     
jonathanpeppers 12.05.2016, 15:15
quelle

2 Antworten

3

Sie haben ein paar Optionen:

  • Akteure haben einen integrierten ETW-Anbieter ( Microsoft-ServiceFabric-Actors ) mit einem ActorMethodThrewException -Ereignis. Sie können entweder:

    • Verwenden Sie einen externen Prozess, um ETW-Ereignisse zu sammeln und an Application Insights weiterzuleiten (z. B. mithilfe von SLAB oder Azure Diagnostics)
    • Verwenden Sie die Klasse 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

    %Vor%

    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:

    • Sie können diese Methode auch verwenden, um Ihre eigenen Header zu lesen (Sie benötigen auch eine clientseitige benutzerdefinierte IServiceRemotingClientFactory , um sie hinzuzufügen)
    • Dieselbe Technik kann auf zuverlässige Dienste angewendet werden (mit der Klasse ServiceRemotingDispatcher )
Eli Arbel 17.05.2016, 09:03
quelle
1

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.

    
Vaclav Turecek 13.05.2016 21:43
quelle