具有辅助角色的异步监视Azure Service Bus

时间:2015-08-19 19:17:53

标签: azure azureservicebus

我有一个辅助角色来监控Azure Service总线,该总线可能在高峰时间收到数千条消息。我意识到我可以使用我的云服务来创建工作者角色的多个实例(竞争消费者),并以这种方式扩展,但我也希望每个工作者实例也异步处理多个消息。

所以我的问题在这;在我的Client.OnMessage处理程序中,我可以调用另一个线程上的异步函数,并通过读取下一条消息继续OnMessage吗?理想情况下,这只会发生一定次数。

例如:

 Client.OnMessage((receivedMessage) =>
            {
                try
                {
                   await ProcessCurrentMessage(receivedMessage);
                   // Would like to launch this asynchronously X times 
                }
                catch(Exception ex)
                {
                    receivedMessage.Abandon();
                   //Handle error
                }
            });


  public async void ProcessCurrentMessage(BrokeredMessage receivedMessage)
  {  
      // Get properties from this message and do stuff
  }

我要做的是通过让每个工作者角色一次处理x个消息来扩展,利用该云服务上的CPU,并通过添加更多云实例来增强它。如果我在队列中有20条消息,10个消费者,10个将开始(每个竞争消费者1个),那么第11个消息将等到一个完成,等等。如果每条消息需要几分钟来处理,这似乎有点像路障。

感谢任何建议或提示。

0 个答案:

没有答案