C# 经常从Azure存储队列中退出队列,而不运行多个cron作业实例?

C# 经常从Azure存储队列中退出队列,而不运行多个cron作业实例?,c#,asp.net,azure,azure-storage-queues,C#,Asp.net,Azure,Azure Storage Queues,我有一个非常典型的挑战:我有一个应用程序,我想发送电子邮件/短信。我使用第三方API(Mandrill和GatewayAPI)。这通常很快,但我的一些邮件很大,需要一段时间才能发送。这就是为什么我想把它转移到另一个系统 我的计划是做一个简单的Azure Web作业读取经常运行的Azure消息队列,以确保所有新的通信都能快速发送 我的问题是:如果我的工作时间有时超过了时间间隔,这是一个问题吗?如果是这样,我的设计是否有明显的缺陷(即使用消息队列和间隔较短的web作业) (我希望这不是一个基于意见的

我有一个非常典型的挑战:我有一个应用程序,我想发送电子邮件/短信。我使用第三方API(Mandrill和GatewayAPI)。这通常很快,但我的一些邮件很大,需要一段时间才能发送。这就是为什么我想把它转移到另一个系统

我的计划是做一个简单的
Azure Web作业
读取经常运行的
Azure消息队列
,以确保所有新的通信都能快速发送

我的问题是:如果我的工作时间有时超过了时间间隔,这是一个问题吗?如果是这样,我的设计是否有明显的缺陷(即使用消息队列和间隔较短的web作业)


(我希望这不是一个基于意见的问题-实际上不是-我对如何编程此设置有实际问题)

您需要做的是订阅特定队列的触发器

这真的很简单。基于标准模板创建新的Azure web作业时,默认情况下会在
Functions.cs
中添加以下函数:

    // This function will get triggered/executed when a new message is written 
    // on an Azure Queue called queue.
    public static void ProcessQueueMessage([QueueTrigger("QUEUENAME")] string message, TextWriter log)
    {
       // your code
    }

然后将代码移到这里,就不会有间隔问题,因为触发器会立即处理它。

您需要做的是将触发器订阅到特定队列

这真的很简单。基于标准模板创建新的Azure web作业时,默认情况下会在
Functions.cs
中添加以下函数:

    // This function will get triggered/executed when a new message is written 
    // on an Azure Queue called queue.
    public static void ProcessQueueMessage([QueueTrigger("QUEUENAME")] string message, TextWriter log)
    {
       // your code
    }
然后将代码移到这里,就不会有间隔问题,因为触发器会立即处理它