具有计时器触发和Blob触发的连续Web作业

时间:2016-04-07 23:46:09

标签: c# azure azure-webjobs azure-webjobssdk

我在使用azure jobs sdk及其扩展名的同一个Web作业控制台应用程序中具有以下功能。定时触发器查询文件的API端点,对其执行一些额外的工作,然后将文件保存到名为blahinput的blob中。现在第二个方法“ProcessBlobMessage”应该在blahinput中识别新的blob文件,并用它做一些事情。

public static void  ProcessBlobMessage([BlobTrigger("blahinput/{name}")] TextReader input,
        string name, [Blob("foooutput/{name}")] out string output)
    {//do something        }

    public static void QueryAnAPIEndPointToGetFile([TimerTrigger("* */1 * * * *")] TimerInfo timerInfo) { // download a file and save it to blob named blah input}

这里的问题是: 当我将上述Web作业部署为连续时,只有定时器触发的事件似乎被触发,而应该识别新文件的函数永远不会被触发。在同一个Web作业中是否不可能有两个这样的触发器?

2 个答案:

答案 0 :(得分:2)

从这篇文章:How to use Azure blob storage with the WebJobs SDK

  

WebJobs SDK扫描日志文件以监视新的或更改的blob。这个过程不是实时的;在创建blob后几分钟或更长时间内,函数可能不会被触发。另外,storage logs are created on a "best efforts"基础;无法保证将捕获所有事件。在某些情况下,可能会错过日志。如果blob触发器的速度和可靠性限制对于您的应用程序是不可接受的,建议的方法是在创建blob时创建队列消息,并使用QueueTrigger属性而不是BlobTrigger属性处理blob的函数。

答案 1 :(得分:0)

在发布新的blob触发器策略之前,BlobTriggers不可靠。触发器基于Azure Storage Analytics日志,该日志以Best-Effort为基础存储日志。 关于此问题正在进行Github issue,并且还有关于new Blob scanning strategy的公关。

这就是说,检查您是否使用Latest Webjobs SDK version 1.1.1,因为先前版本上有an issue可能会导致BlobTriggers出现问题。