我有一个非常典型的挑战:我有一个应用程序,我想发送电子邮件/短信。我使用第三方API(Mandrill和GatewayAPI)。这通常很快,但我的一些消息很大,需要一段时间才能发送。这就是为什么我想把它移到另一个系统。
我的计划是从经常运行(即15秒)的Azure Web Job
进行简单Azure message queue
读取,以确保所有新通信都发送得非常快。
我的问题是:如果我的工作有时需要比间隔时间更长,这是一个问题吗?如果是这样,我的设计是否有明显的缺陷(即使用消息队列和间隔较小的Web作业)?
(我希望这不是一个基于意见的问题 - 它真的不是 - 我对如何编程此设置存在实际问题)
答案 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
}
然后在这里移动代码你没有间隔问题,因为它被触发器立即处理。