2017-10-30 2 views
1

Ich habe ein Service Fabric OWIN-basierte API, die einen Dienst Stoff Schauspieler anruft. API wartet darauf, dass der Akteur die Arbeit beendet, bevor die Antwort zurückgegeben wird. Manchmal kann es lange dauern, bis der Schauspieler fertig ist.Service Fabric Actor Timeout

Das Standard-Timeout für Schauspieler sind 5 Minuten und ich habe versucht, mit der Operation Timeout zu erhöhen:

[assembly: FabricTransportServiceRemotingProvider(MaxMessageSize = 1073741824, OperationTimeoutInSeconds = 600)] 

sowohl in der API und der Schauspieler. Aber es wirft Timeout-Fehler genau nach 5 Minuten. Gibt es eine andere Möglichkeit, den Timeout des Service Fabric Service/Actor zu erhöhen?

unten wird der Fehler ich an API Ende Empfang:

"This can happen if message is dropped when service is busy or its long running operation and taking more time than configured Operation Timeout." 

Antwort

1

Was passiert, wenn der Job noch länger dauert als erwartet? Haben Sie in Betracht gezogen, dieses asynchrone/ereignisgesteuerte Verfahren durchzuführen?

Zum Beispiel:

  1. Anruf BeginProcessing, planen Sie eine Erinnerung in dem Schauspieler. Gib einen Job-Token zurück.
  2. Reminder feuert, Verarbeitung beginnt.
  3. Verarbeitung abgeschlossen.
  4. Benachrichtigen Sie Anrufer (mit SignalR o.ä.) oder setzen Sie einen GetJobProgress Endpunkt auf einem JobMonitorActor. Verwenden Sie Job-Token für die Korrelation.
Verwandte Themen