问题标签 [azure-webjobssdk]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
14620 浏览

azure - 使用 azure webjobs 我如何为计划任务传递参数

我正在创建一个将作为 Azure webjob 运行的 dot net 控制台应用程序。它计划每小时运行一次。

我想知道在调用作业时如何将参数传递给作业?

0 投票
1 回答
282 浏览

azure-webjobssdk - Azure WebJob - 获取参数并创建同一个 webjob 的实例

我有以下情况。我有一个控制台应用程序(我们称之为 consoleapp.exe),它接受一些参数值并连续运行。因此,如果我有 consoleapp.exe “cars” - 这将使应用程序为“cars”运行

现在假设,我需要“animals”'consoleapp.exe“animals”——这将使应用程序为“animals”运行

本质上,每次需要新的参数值时,我都需要创建一个 webjob 并连续运行。

consoleapp.exe "汽车" --> webjob_cars

consoleapp.exe "动物" --> webjob_animals

consoleapp.exe "机器人" --> webjob_robots

这意味着,除了不同的参数值外,实际上为同一个 consoleapp.exe 创建了一个 webjob。

我该怎么做呢?

0 投票
1 回答
773 浏览

azure-webjobs - 来自 WebJob 的 Azure 存储队列上的轮询和睡眠

我知道QueueTrigger当队列中有新消息可用时,会调用一些东西。然而,这种“框架风格”的 WebJobs 让我很难正确初始化我的环境。

这就是我想自己轮询队列的原因,基本模式是这样的:

我的问题是,在 WebJob 中连续运行时,这种方法是否存在潜在问题?如果是这样,避免“框架式”WebJobs 的可能替代方法是什么?

编辑

根据 Victor 的要求,这里有一些关于我为什么不想使用这种QueueTrigger方法的更多信息。基本上有两个原因。

第一个在上面已经提到了,就是框架调用了一个带有QueueTrigger属性的方法。这意味着我必须将所有初始化都放在该方法中。

我们的 Web 应用程序中有一个两阶段 IoC 容器(每个应用程序和每个请求),我想让 WebJobs 尽可能靠近 Web 应用程序,所以我想使用那个两阶段 IoC在 WebJobs 中也是如此(每个应用程序的 IoC 会进行一些繁重的初始化,然后在所有请求中重用)。这样做的结果是我必须将每个应用程序的容器放在静态变量或单例中,以便我可以从静态QueueTrigger方法访问它。这是我不愿意做的设计怪癖(IMO,Microsoft 做的太多了,例如,Thread.CurrentCulture或者HttpContext.Current- 这真的是一种反模式并且会损害可测试性)。

针对上述情况的完美 WebJobs SDK 将使基础设施(后退计时器、毒物处理等)可作为服务使用,以便主控制流始终保留在应用程序中。这可能适用于 SDK 的所有功能,也可能不可能,我对 SDK 的了解还不够,无法判断。

第二个原因是开发者的便利。我们有一个分布式团队,有时在离线环境中工作。从我在这里这里阅读的内容来看,不可能使用存储模拟器在本地运行 WebJob 应用程序并让它出列消息。使用我现在采用的自我轮询方法,这就像一个魅力。

0 投票
5 回答
736 浏览

azure - Azure Webjobs 的 Slowcheetah 转换

根据我的经验,Slowcheetah 不适用于 Azure Webjobs。

我只是在寻找是否是这种情况(或不是)的确认。

干杯

0 投票
2 回答
1977 浏览

c# - 单个队列消息上的多个 Azure WebJob 函数?

我们的后端正在收集原始数据并将其推送到 Azure 存储队列。我们想对每个排队的消息做两件事

  1. 记录/归档它
  2. 解析它并将解析结果发送到新队列

为了保持简洁明了,我们希望有两个 WebJob 函数指向同一个队列:

但这不起作用:ArchiveRawData或 ParseRawData 得到消息,但不是另一个

是否有一个选项可以使上述场景起作用?似乎消息现在在第一个函数完成后自动出列(无论哪个)。但我认为 WebJobs SDK 可以检测到具有相同 QueueTrigger 的多个函数,并且只有在所有函数完成后才能将消息出列。

为了解决这个问题,我们目前在一个函数中有两个输出:

但正如我所说,我们希望让事情变得小而简单,所以如果我们可以使用单独的函数会很棒。

0 投票
1 回答
159 浏览

azure - webjob 关闭时更新存储表

我的问题类似于下面的问题。

通知 NoAutomaticTrigger 类型作业的连续 Azure WebJob 何时停止

我使用了Amit 博客中的想法,但遇到了一点障碍

我在 webjob 中设置了一个文件观察程序,如果 webjob 从门户关闭,则会触发该文件观察程序。

在网络作业终止之前,我需要更新存储表中的一些标志。

问题是我的代码似乎停在我试图从存储表中检索记录的地方。我在以下代码周围有异常处理程序,并且控制台上没有写入异常消息。

下面是我的代码

我已将时间增加到stopping_wait_time300settings.job秒,但仍然没有运气。

0 投票
1 回答
328 浏览

azure - 用于聚合的 Azure WebJobs

我试图找出一种解决方案,通过使用 Azure 队列和 WebJobs 来获取数据,以重复聚合数千个远程 XML 和 JSON 数据文件。

基本上,将在 Azure 网站/应用程序上调用某种类型的输入端点 URL(使用数据 URL 作为参数)。它应该触发 WebJobs 后台作业(或者它可以持续运行并定期检查队列是否有新工作),获取数据 URL,然后在完成时回调外部端点 URL。

现在主要关注的是数量及其性能/扩展/定价开销。每 10-60 分钟将获取大约 10,000 个 URL(大多数 URL 将每 60 分钟获取一次)。关于这种重复性大批量后台作业的场景,我有几个问题:

  1. Azure WebJobs(或 Workers?)是否适合在此数量上进行后台处理,并且能够相应地进行扩展?

  2. 对于此类卷,哪个 Azure 网站层最适合(比较http://azure.microsoft.com/en-us/pricing/details/app-service/)?还是只有云或虚拟机才能以这种规模工作?

任何建议或提示表示赞赏。

0 投票
1 回答
491 浏览

c# - Azure WebJobs 异步函数中的事务支持

.NET Framework 4.5.1 在异步方法中引入了事务支持,例如:

参考:https ://msdn.microsoft.com/en-us/library/dn261473(v=vs.110).aspx

这也可以在 Azure WebJobs 异步功能中使用,以收紧工作单元并在主机关闭的情况下提供更好的幂等操作吗?如果是这样,它会对性能产生任何影响吗?

更新:

看起来服务总线队列(标准层)支持事务(单级),但存储队列不支持。参考:https ://msdn.microsoft.com/en-us/library/azure/hh767287.aspx 上的“基础功能”部分

0 投票
1 回答
926 浏览

azure-web-app-service - 在 Azure WebApps(以前的网站)中,我可以获得运行的实例数量吗?

我正在创建 Azure WebJob 以处理 Azure Tables 中的数据,并且当有多个 WebSite 实例(即 WebSite 被横向扩展)时,需要使用一些处理同步。

我可以从基础架构(当前正在运行多少个 WebApp 实例)获取此类信息吗?

0 投票
1 回答
1066 浏览

azure - Azure 连续 webjob (blob) 仅触发一次

我有一个 Azure webjob,其中包含一些 blob 触发函数。我通过门户上的“添加作业”对话框将其上传到 Azure,并将其设置为“连续运行”。预期的行为是,每当将 blob 添加/修改到 blob 中指定的容器时,都会触发相应的函数被调用。然而,这不会发生。

触发功能的唯一方法(在上传 Blob 之后)是停止 Web 作业重新启动它。

每次我重新启动作业时,功能似乎都被触发并且只触发一次。任何后续的 blob 更新似乎都不会再次触发它们。

然而,在门户网站上,WebJob 显示为“正在运行”,但在初始触发后没有触发任何功能。

此网络作业的主要功能如下所示:

可能是什么问题 ?触发函数是标准的 blob 触发函数,并且是第一次工作——因此我还没有共享该代码。

更新函数签名看起来像这样