2012-11-13 23 views

回答

1

將所有處理移出Web角色絕對是一個好主意。服務總線隊列肯定會起作用。另一種選擇是使用Azure Storage queues代替。你可能會發現它們更容易理解,因爲它們是通過HTTP實現排隊概念的相對簡單的實現,並且.NET客戶端庫非常好。我相信他們也會更便宜。

有很多方法可以分解後臺處理。你可以:

  1. 使用Web角色的工人,由WebRole.Run()方法做的工作旋轉起來工作線程。
  2. 讓一名工作人員連續完成所有階段。
  3. 有一個單獨的工作人員分別完成所有階段,每個階段之間有另一個隊列。
  4. 有多個工人,甚至每個階段有多個工人。

取決於工作的資源密集程度以及需要多快完成,一種方法可能比其他方法更好。更深入的處理會導致你進一步下降。

0

這取決於如何複雜的項目/產品是多少交易你有...但你提到你可以使用服務總線隊列到:

  1. 接收消息和temprorarily它們存儲在FIFO隊列
  2. 它們傳遞到特定功能工作者角色:「擦洗接觸」輔助角色
  3. 傳回的消息隊列/存儲

什麼是好的大約說的就是你可以有一個工作者角色執行4個特定任務:清理消息,增加數據,提取社交配置文件,發送電子郵件通知。您可以根據消息選擇功能。

您可以讓一條消息進入隊列,隊列傳遞給工作者角色,告訴它「清理消息」,傳遞迴隊列,隊列將其傳遞給工作角色「增加數據」等。

或者你可以有一個服務總線隊列,並做「擦洗的消息,增加數據,拉動社會概況,電子郵件通知」 ...等

這樣做的好處是,服務總線隊列管理FIFO傳統的消息功能。此外,您有一個鬆散耦合的工作角色系統,可以根據需要大幅度擴展以增加消息處理。