在没有 运行 个 cron 作业实例的情况下经常从 Azure 存储队列中出队?

Dequeue from a Azure Storage queue very often without running multiple instances of cron job?

我有一个非常典型的挑战:我有一个要发送 emails/SMS 消息的应用程序。为此,我使用第三方 API(Mandrill 和 GatewayAPI)。这通常很快,但我的一些消息很大,需要一段时间才能发送。这就是为什么我想将它移动到不同的系统。

我的计划是从经常运行(即 15 秒)的 Azure message queue 中进行简单的 Azure Web Job 读取,以确保所有新的通信都以相当快的速度发送。

我的问题是:如果我的作业有时比间隔时间长,是否有问题?如果是这样,我的设计是否有明显的缺陷(即使用消息队列和低间隔的 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
    }

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