我的 Azure Web 应用程序中运行了两个 Azure Web 作业:
- 作业 A - 连续运行
- 作业 B - 触发
Job A 的目的是基于两件事触发 Job B:
- 作业 B 在过去一小时内未针对指定的帐号运行(作为作业 A 的参数传递到作业 B。
- 从数据库中确定的其他一些业务逻辑
#2 很简单。我有一个问题是#1。作业 A 是否可以查询 Web 作业队列以查看作业 B 是否已执行?
这是作业 B(已触发):
public class Functions
{
public static void ProcessQueueMessage([QueueTrigger("triggeredqueue")] string message, TextWriter log)
{
var accountId = message;
//DO STUFF WITH accountId HERE...
}
}
这是作业 A(连续运行)。我在注释中添加了代码以显示我想做的事情:
class Program
{
static void Main()
{
while (true)
{
var accounts = getAccounts();
foreach (var account in accounts) {
if (testOtherBusinessLogic(account)) {
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(ConnectionStringHelper.StorageConnectionString);
CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();
CloudQueue queue = queueClient.GetQueueReference("triggeredqueue");
queue.CreateIfNotExists();
//THIS IS WHAT IT IS DOING NOW:
CloudQueueMessage message = new CloudQueueMessage(account.AccountId);
queue.AddMessage(message);
//THIS IS WHAT I WOULD LIKE IT TO DO:
/*
if (!queue.Any(x => x.RunDate > (DateTime.Now.AddMinutes(-60)) && x.Message == account.AccountId.ToString()) {
CloudQueueMessage message = new CloudQueueMessage(account.AccountId);
queue.AddMessage(message);
}
*/
}
}
System.Threading.Thread.Sleep(7000);
}
}
}