我怎样才能创建一个"健康检查"用于Azure存储队列

时间:2016-05-13 17:55:09

标签: azure-storage

因此,在使用Azure存储队列和Web作业开发应用程序时,我觉得我需要进行某种运行状况检查(通过API),以确保为每个环境正确配置我的Azure存储队列。 我无权(直接)查看信息中心或Kudu。

到目前为止,我的想法只是创建一个API路由,返回一个bool,告诉我是否能够创建队列,如果它不存在,并查看一条消息(即使一个人没有&#39) ; t存在),如:

    public async Task<bool> StorageQueueHealthCheck()
    {
        return await _queueManager.HealthCheck();
    }

实施:

public async Task<bool> HealthCheck()
{
   try
  {
      CloudQueue queue = _queueClient.GetQueueReference(QueueNames.reportingQueue);
      queue.CreateIfNotExists();

      CloudQueueMessage peek = await queue.PeekMessageAsync();

      return true; // as long as we were able to peek at messages
   }
   catch (Exception ex)
   {
      return false;
   }
}

这是一种不好的方法吗?还有另一种方法来健康检查&#34;当仪表板被抽象出来时,某些Azure功能?如果我绝对需要,我将能够查看Kudu,但宁可使用API​​并通过Swagger点击它。

2 个答案:

答案 0 :(得分:1)

看起来不错。您还可以尝试CloudQueue.FetchAttributeAsync(),因为当邮件大小很大时,有效负载会更小。

答案 1 :(得分:1)

这是一个很好的方法,请确保您确实拥有重试机制,以便您的健康检查不会因间歇性故障而返回false。

第二种方法, 只有触发才应该执行作业的api而不是api应该有一个控制台应用程序(webjob),它定期执行此任务(1分钟)并基于某些逻辑让我们说在过去10分钟内所有'创建'抛出错误发送电子邮件。这可以在所有环境中使用。