2017-07-14 88 views
0

我得到了一個運行在3個實例中的小型WebJob,WebJob由ServiceBusTrigger觸發,每個工作大約需要20秒(我添加了一個測試休眠)。Azure WebJob Scale Scale Out只有2個工作正在工作

enter image description here

現在我添加3項的ServiceBus隊列,但只有2 WebJob實例都在工作。 enter image description here

什麼是第三個實例在做什麼,我怎麼能得到的實例也在隊列上工作?

我的代碼是非常基本的:

public class Functions 
{ 
    // This function will get triggered/executed when a new message is written 
    // on an Azure Queue called queue. 
    public static void ProcessQueueMessage([ServiceBusTrigger("jobs2")] string message, TextWriter log) 
    { 

     string url = "https://requestb.in/xxxxx"; 
     log.WriteLine(message); 
     log.WriteLine("gotmsg"); 
     Thread.Sleep(20000); 
     log.WriteLine("sending"); 

     string postData = "test=" + message; 

     Console.WriteLine(postData); 

     System.Net.WebRequest req = System.Net.WebRequest.Create(url); 
     //Add these, as we're doing a POST 
     req.ContentType = "application/x-www-form-urlencoded"; 
     req.Method = "POST"; 
     //We need to count how many bytes we're sending. Post'ed Faked Forms should be name=value& 
     byte[] bytes = System.Text.Encoding.ASCII.GetBytes(postData); 
     req.ContentLength = bytes.Length; 
     System.IO.Stream os = req.GetRequestStream(); 
     os.Write(bytes, 0, bytes.Length); //Push it out there 
     os.Close(); 
     System.Net.WebResponse resp = req.GetResponse(); 
     if (resp == null) return; 
     System.IO.StreamReader sr = new System.IO.StreamReader(resp.GetResponseStream()); 
     log.WriteLine(sr.ReadToEnd().Trim()); 
    } 
} 

回答

1

什麼是第三個實例做什麼,我怎麼能得到的實例也隊列工作?

第三個實例應該作爲默認值工作。我假設Azure WebApp爲多個實例使用指定的LoadBalance策略。看來我們無法配置LoadBalance策略。在你的情況下,似乎3條消息不足以進行測試。請嘗試用更多消息對其進行測試。我在我身邊測試它,它工作正常。以下是我使用的發送消息的測試代碼。

QueueClient.CreateFromConnectionString("connection string", QueueName); 

for (int i = 0; i < 20; i++) 
{ 
    var sendMessage = new BrokeredMessage("test message"+i); 
    client.Send(sendMessage); 
} 

enter image description here