0

Ich bin sehr neu in Azure Service Fabric.So starten Sie mehrere Instanzen eines dauerhaft ausgeführten Diensts auf Azure Service Fabric dynamisch

Mein Szenario ist, dass ich einen lang laufenden Dienst habe, den ich brauche, um mehrere Instanzen dynamisch zu starten/zu stoppen, und der Start sollte kein Block sein. Jede Instanz wird 1 Dateneintrag unabhängig verarbeiten. Zum Beispiel:

Angenommen, ich habe einen Wetterdienst, der die Wetterdaten für jede Stadt speichert und lange läuft. Und ich habe eine Liste von Städten, die sich ändern können. Also, ich möchte die folgende Sache tun:

var weatherSvcList = new List... 
var currentCities = []; 
while (true) 
{ 
    var newCities = FetchCities(); 

    var addedCities = newCities.Except(currentCities); 
    weatherSvcList = LaunchSvc(addedCities); // launch and return, non-blocking 

    var removedCities = currentCities.Except(newCities); 
    weatherSvcList = StopSvc(removedCities); 

    weatherSvcList = RelaunchErrorSvc(cities); 

    currentCities = newCities; 
} 

Ich habe in Schauspieler-Modell gesucht, aber scheint, wie Schauspieler nicht für lang andauernde Aufgabe geeignet sind, und es ist auch schwer zu starten/stoppen sie. Irgendeine Idee, welches Service/Programmiermodell ich verwenden sollte?

Antwort

0

Verwenden Sie hier eine Aufgabenwarteschlange.

Wenn der Wetterdienst aufgerufen wird, wird eine Aufgabe zum Abrufen von Wetterdaten in die Warteschlange eingereiht. Es würde auch eine Endlosschleife laufen (RunAsync), diese Schleife quittiert und führt Tasks aus.

Auf diese Weise werden die Serviceaufrufe schnell zurückkehren, während die Arbeit im Hintergrund ausgeführt wird.

Einige Code für inspirierende Zwecke here.

+0

Danke für die Lösung. Ich werde es morgen früh überprüfen. Frohes Thanksgiving! –

+0

aber welcher Dienst würde im Hintergrund ausgeführt werden, um die Nachrichten zu verwerfen und in einer Endlosschleife zu verarbeiten? –

Verwandte Themen