1

我創建一個視窗形式的程序監聽一個天青服務總線隊列異步處理消息,並將其執行接收的每個一個漫長的過程brokeredMessage:天青服務總線隊列並聯

QueueClient Client = QueueClient.CreateFromConnectionString(ConfigurationWrapper.QueueConnectionString, ConfigurationWrapper.QueueName); 

      // Configure the callback options 
      OnMessageOptions options = new OnMessageOptions(); 
      options.AutoComplete = false; 
      options.AutoRenewTimeout = TimeSpan.FromMinutes(1); 


      // Callback to handle received messages 
      Client.OnMessageAsync((message) => 
      { 
        message.Complete(); 
       //big jobs put 10 minutes 
       Task t = Task.Factory.StartNew(() => DoAVeryLongJob(message)); 

       return t; 
      }, options); 

如果我發送2條消息與2在此隊列中間隔秒數後,程序會處理第一條消息(調用DoAVeryLongJob需要10分鐘),第二條消息將在第一次調用結束時(10分鐘後)處理。我想要的是這些消息被並行處理。

是否可以並行處理隊列消息?

回答

2

在你OnMessageOptions例如,你需要增加你的MaxConcurrentCalls。以下代碼將並行處理隊列中的5條消息。

// Configure the callback options 
OnMessageOptions options = new OnMessageOptions(); 
options.AutoComplete = false; 
options.MaxConcurrentCalls = 5; 
options.AutoRenewTimeout = TimeSpan.FromMinutes(1); 
+0

非常感謝! – user1018697

相關問題