具有计时器触发和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问题的问题。
- 无法将用户存储在默认的MVC应用程序中
- 我知道有关上传的内容,我们是否必须在接收端做一些事情?
- 如何从代码启动Windows Azure存储模拟器V3.0
- Azure – 删除ADLS文件时出现ADlsError / WebHDFS错误
- 应用程序抛出web.config被修改的exception,但事实并非如此
- Azure网站抱怨角色环境。 未能在启动时初始化
- 在Azure Service Fabric服务中实例化ServiceInitializationParameters的位置和方式是什么?
- 如何从azure表存储查询中获取超过1000个实体?
- 在webjob sdk代码fork之后为公共类ServiceBusTriggerAttribute获取exception