簡體   English   中英

如何在Azure Service Fabric上動態啟動長時間運行的服務的多個實例

[英]How to launch multiple instance of a long running service on Azure Service Fabric dynamically

我是Azure Service Fabric的新手。

我的情況是我有一個長期運行的服務,需要動態啟動/停止多個實例,並且啟動應該是非阻塞的。 每個實例將獨立處理1個數據輸入。 例如:

假設我有一個氣象服務,可以持續獲取每個城市的天氣數據,並且運行時間很長。 我有一個可以更改的城市列表。 因此,我想做以下事情:

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;
}

我已經研究了Actor模型,但似乎Actor不適合長時間運行的任務,而且很難啟動/停止它們。 知道我應該使用哪種服務/編程模型?

考慮在此處使用任務隊列。

當被調用時,天氣服務將排隊任務以提取天氣數據。 它還將運行一個無限循環( RunAsync ),該循環使隊RunAsync隊並執行任務。

這樣,服務調用將在后台執行的同時迅速返回。

一些代碼,鼓舞人心的目的這里

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM