是否经常从Azure存储队列中出队而不运行多个cron作业实例?

时间:2018-04-13 18:54:49

标签: c# asp.net azure azure-storage-queues

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

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

我的问题是:如果我的工作有时需要比间隔时间更长,这是一个问题吗?如果是这样,我的设计是否有明显的缺陷(即使用消息队列和间隔较小的Web作业)?

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

1 个答案:

答案 0 :(得分:1)

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

这很简单。当您基于标准模板创建新的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
    }

然后在这里移动代码你没有间隔问题,因为它被触发器立即处理。

相关问题