我的工作角色需要睡眠时间吗?

Nat*_*ate 1 azure azure-storage azure-worker-roles

我有一个监视队列的辅助角色.尽管我希望它被抨击,但大多数时候队列都是空的.我每隔几分钟就会在队列中得到一个新项目.

我有:

 public override void Run()
 {
     while (true)
     {
         //Check the queue for new messages
         //if there's a new message, do some stuff
     }
 }
Run Code Online (Sandbox Code Playgroud)

我的问题是,如果队列中没有项目,我是否需要执行Thread.Sleep(x)?或者我可以一遍又一遍地检查它?如果我确实需要睡觉,我应该睡多久?(毫秒/秒?)

我主要担心的是Azure费用.

mco*_*ier 7

一种帮助最小化交易费用的好方法(我认为您主要关注的是)将采用退避轮询方法.意思是,每次没有找到队列消息时,慢慢增加睡眠时间.这样做直到睡眠时间达到某个最大值.找到消息后,开始更快地轮询消息.

另一种帮助方法是一次从队列中获取多条消息(而不是一次获取一条消息).这也将有助于交易费用.