我在使用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作业中是否不可能有两个这样的触发器?
答案 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出现问题。