2012-07-25 47 views
0

沒有人知道如何啓用C#中的RabbitMQ流量控制? 我想是這樣的:C# - 如何啓用流量控制與RabbitMQ

channel = connection.CreateModel(); 
    channel.ChannelFlow(true); 
    channel.FlowControl += new RabbitMQ.Client.Events.FlowControlEventHandler(channel_FlowControl); 

基本上,我希望當RabbitMQ的連接進入流量控制模式被觸發了「channel_FlowControl」事件 - 但不知何故,這不會發生。

任何人都知道我如何正確處理它?

在此先感謝

+1

和SOD的定律,'FlowControl'事件[無證(HTTP ://www.rabbitmq.com/releases/rabbitmq-dotnet-client/v2.8.4/rabbitmq-dotnet-client-2.8.4-client-htmldoc/html/type-RabbitMQ.Client.IModel.html),但是文檔確實討論了[流量控制](http://www.rabbitmq.com/memory.html)作爲主題。 – 2012-07-25 12:33:09

+0

未記錄,也許 - 但不知何故,我想捕捉該事件,因爲我的兔子有時會過載並進入FlowControl模式...並開始阻塞。 – Nethotline 2012-07-25 13:10:57

+0

沒有人知道如何正確處理這個問題嗎? – Nethotline 2012-08-07 14:28:53

回答

0

那麼,經過一些與真正的討論!來自RabbitMQ的好人們的答案很簡單。

你不能

有一個在C#驅動程序沒有可用的回調,所以建議的方法是使用一個小的,內部的異步前隊列,把你的東西在裏面,與異步線程讀取該隊列並將其發佈給兔子。

這樣,當兔子放慢速度並且您也需要減慢輸入速度時,您會注意到,因爲內部隊列增長,您可以檢測到增長並相應採取行動。

此外,由於在RabbitMQ的郵件列表樂於助人的人,即使它不是那種回覆我想聽到;-)