2014-03-05 24 views
0

我們目前在我們的服務器上推送通知的推送通知ID約爲200萬用戶。但是,我們的系統在這個規模上存在一些問題,因此我們正在考慮將通知中心作爲替代方案。通知中心 - 註冊現有用戶庫

我們已經整合了登錄每個用戶所需的相關服務器代碼,但爲了覆蓋最近未登錄的所有用戶,我們需要手動註冊所有用戶一次。我創建了一個簡單的控制檯應用程序,通過循環訪問我們的數據庫,創建相關標籤並將其註冊到集線器來完成此操作。

但是,對於只有300,000個用戶的測試數據庫運行該程序,該程序非常慢。它每1.25分鐘只註冊1000個用戶,這意味着整個30萬用戶可能需要6個小時以上,而200萬用戶可能需要幾天的時間。

這裏是什麼樣的控制檯應用程序看起來像一個小樣本:

var accounts = GetUsers(); 
Parallel.Foreach(accounts, account => 
{ 
     var registration = Register(user.ID, user.pushID).Result; 
}); 

async Task<RegistrationDescription> Register(int ID, string pushID) 
{ 
    string ID = "ID-" + ID; 
    HashSet<string> tags = new HashSet<string>(); 
    tags.Add(ID); 

    return await client.CreateAppleNativeRegistrationAsync(pushID, tags);  
} 



問:有沒有快速註冊通知了大量現有用戶羣的便捷方式集線器?



+0

我不知道另一種方式來執行客戶端外部的註冊。出於好奇,當您運行測試時,您是否在Visual Studio中使用調試器進行測試?在過去的一次,我發現應用程序中的一個很大的區別是,當它從VS運行並且可執行文件直接運行時,會發出類似這樣的HTTP請求。 – MikeWo

+0

我試過和沒有調試器。所花費的時間大致相同。 – lolcodez

回答

0

簡短的回答您的問題沒有,有沒有一個內置的通知集線器的功能,以支持海量註冊。但是,它不一定是一個讓這個過程更快的巨大障礙。

從哪裏執行此代碼?如果您正在通過本地網絡執行此操作並通過Internet進行每次註冊通信,則可能需要幾天時間,因爲通常的網絡延遲。如果你不能讓你的程序運行好幾天(儘管我不明白爲什麼你不能讓它這樣做),那麼你可能會更好地從Azure數據中心內部,你自己的工作者角色, 例如。