2012-07-31 43 views
4

我已經看到大多數隊列示例作爲輪詢機制。是否有可能將其更改爲隊列列表器。因爲投票可能會影響工作人員的表現。將列表程序寫入Azure隊列

+0

「因爲投票可能會影響工作人員的表現」 - 真的嗎?你多久計劃一次投票?你能分享更多關於你遇到的性能問題嗎? – smarx 2012-07-31 15:59:55

+0

@smarx會不會影響性能,因爲我們使用的資源是不必要的。但你的問題是有效的,我會做一個性能運行。但要注意的是,我們正在與隊列進行http呼叫。 – satish 2012-08-01 04:51:21

回答

12

Windows Azure存儲隊列和Windows Azure服務總線隊列都使用輪詢,並且本身沒有通知功能;但是,Windows Azure服務總線隊列確實支持長輪詢,這與您當前可以獲得的通知方法非常接近。當您使用MessageReceiver的Receive方法時,它將使用長輪詢(意味着它會請求一條消息,如果隊列中沒有一個服務器不會立即響應,但會等待一段時間,直到消息到達當它響應客戶端時,或者直到空閒時間過去,在這種情況下,它將返回一個沒有消息的響應。Receive方法本身會給人一種同步調用的印象來獲取消息,並且不會返回直到出現一條消息,但它有重載以允許空閒時間,所以你不會進入無限等待)。

服務總線您可以設置爲訂閱服務的主題,但您仍然在輪詢該主題以獲取您的消息,所以我不認爲這是OP要求的核心。

+0

但是,如果我們有listner會很好。任何想法,如果這在MS連接可用.else我可以添加一個連接錯誤 – satish 2012-07-31 10:14:50

+0

我不知道當前的全面通知功能的請求。 – MikeWo 2012-07-31 10:18:24

2

使用Windows Azure隊列,您唯一的選擇是輪詢。與Service Bus Topics/Subscription一樣,您可以擁有完整的發佈/訂閱模型,訂閱者將成爲「聽衆」。

+2

但是,您仍然會在服務總線主題上輪詢該主題以檢索您的消息。訂閱模型只需讓您有一個入站隊列消息的多個目標,並加上過濾;然而,最終,聽衆(或消費者)仍然在爲他們的消息輪詢他們各自的主題。 – MikeWo 2012-07-31 10:12:17