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

我在使用azure jobs sdk及其扩展的同一Web作业控制台应用程序中具有以下function。 定时触发器查询文件的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作业中是否不可能有两个这样的触发器?

从本文: 如何使用WebJobs SDK使用Azure blob存储

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

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

这就是说 ,检查您是否使用最新的Webjobs SDK版本1.1.1,因为先前版本存在可能导致BlobTriggers问题的问题。