【问题标题】:Continuous Web Job with timer trigger and Blob trigger具有计时器触发器和 Blob 触发器的连续 Web 作业
【发布时间】:2016-04-07 23:46:09
【问题描述】:

我在使用 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 作业部署为连续时,似乎只有计时器触发的事件会被触发,而应该识别新文件的功能永远不会被触发。在同一个网络作业中不可能有两个这样的触发器吗?

【问题讨论】:

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


    【解决方案1】:

    来自这篇文章: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 属性斑点。

    【讨论】:

    • 感谢您的快速回复!当然会稍微重构我的代码以尝试使用队列以获得更好的可靠性,并且确实遇到了配置队列处理设置,这可能有助于我设置轮询和批量大小。再次感谢!
    • @JS_GodBlessAll。这是处理队列的一个很好的起点azure.microsoft.com/en-us/documentation/articles/…
    【解决方案2】:

    在新的 blob 触发策略发布之前,BlobTriggers 是不可靠的。该触发器基于 Azure 存储分析日志,该日志会尽最大努力存储日志。 有一个关于此的持续 Github issue,还有一个关于 new Blob scanning strategy 的 PR。

    话虽如此,请检查您是否使用Latest Webjobs SDK version 1.1.1,因为之前的版本中有an issue,可能会导致BlobTriggers 出现问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-06
      • 2021-02-26
      • 2020-11-26
      • 1970-01-01
      • 1970-01-01
      • 2021-12-22
      • 2018-10-03
      • 1970-01-01
      相关资源
      最近更新 更多