因此,在使用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点击它。
答案 0 :(得分:1)
看起来不错。您还可以尝试CloudQueue.FetchAttributeAsync(),因为当邮件大小很大时,有效负载会更小。
答案 1 :(得分:1)
这是一个很好的方法,请确保您确实拥有重试机制,以便您的健康检查不会因间歇性故障而返回false。
第二种方法, 只有触发才应该执行作业的api而不是api应该有一个控制台应用程序(webjob),它定期执行此任务(1分钟)并基于某些逻辑让我们说在过去10分钟内所有'创建'抛出错误发送电子邮件。这可以在所有环境中使用。