问题标签 [azure-webjobs-continuous]

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 回答
451 浏览

azure - 将消息添加到队列时未触发 Azure Web 作业

我正在尝试诊断我正在运行的 Azure Web 作业所表现出的不良行为的根本原因。

事实:

我有一个大部分时间都在工作的 Azure Web 作业,但是每隔几天它就会停止处理消息。

CPU 和内存看起来不错: 在此处输入图像描述

您可以看到最后一次成功运行是在几个小时前: 在此处输入图像描述

队列中仍有数百条消息:

在此处输入图像描述

确认在过去 24 小时内配置或可执行文件没有任何更改,是什么导致了这种行为?

0 投票
1 回答
752 浏览

c# - 网络作业:未找到库

我们有一个用 .NET Core 2.x 编写的连续 WebJob,过去几周一直运行良好。最近有人对这个 WebJob 进行了一些更改,并引入了一个 3rd 方 NuGet 包。现在,我无法启动 WebJob,因为它无法找到第 3 方库依赖项之一。

这是错误消息:

D:\local\Temp\jobs\continuous\Temp1\oitdncff.sfg>dotnet Temp1.dll
错误:
找不到应用程序依赖项清单 (Temp1.deps.json) 中指定的程序集:
包:'System.Drawing.Common ',版本:'4.5.0-preview1-25914-04'
路径:'runtimes/win/lib/netcoreapp2.0/System.Drawing.Common.dll'

在谷歌搜索这个问题时,我尝试了几件我发现的事情。这是 csproj 文件中的 PropertyGroup 和 ItemGroup(NuGet 包):

根据在线建议,我添加了该行
<PublishWithAspNetCoreTargetManifest>false</PublishWithAspNetCoreTargetManifest>

<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0" />

具有依赖关系的包是EPPlus.Core

我已经确认该库System.Drawing.Common确实存在于我们的 Azure Web 应用程序的 app 文件夹中,但是当 WebJob 启动时,它忽略了该文件存在并查看运行时 (GAC) 并失败。

更新: 我意识到 EPPlus.core 包不是官方的,所以切换到官方包希望这能解决错误。同样的错误,但新版本的System.Drawing.Common version: 4.5.0-preview1-26216-02

我已手动将 NuGet 包添加System.Drawing.Common version: 4.5.0-preview2-26406-04到项目中,这消除了原始错误,但随后我开始收到Microsoft.Win32.SystemEvents version: 4.5.0-preview2-26406-04无法找到的错误。该库依赖于System.Drawing.Common.

我尝试做与上面相同的事情,并将 NuGet 包Microsoft.Win32.SystemEvents version: 4.5.0-preview2-26406-04直接添加到项目中,但这次错误并没有消失。

进一步更新: 在搜索更多之后,我在这里看到了一篇关于发布然后压缩已发布目录并上传 zip 的帖子。这确实有效,有问题的错误消失了,但这并不是真正的解决方案。我们使用 VSTS 作为我们的 repo 系统和我们的 CI/CD。我将构建配置设置为发布,然后复制文件。WebJob 在通过此过程部署时会引发错误。

0 投票
1 回答
217 浏览

c# - 我可以查询 Azure Web 作业队列吗?

我的 Azure Web 应用程序中运行了两个 Azure Web 作业:

  • 作业 A - 连续运行
  • 作业 B - 触发

Job A 的目的是基于两件事触发 Job B:

  1. 作业 B 在过去一小时内未针对指定的帐号运行(作为作业 A 的参数传递到作业 B。
  2. 从数据库中确定的其他一些业务逻辑

#2 很简单。我有一个问题是#1。作业 A 是否可以查询 Web 作业队列以查看作业 B 是否已执行?

这是作业 B(已触发):

这是作业 A(连续运行)。我在注释中添加了代码以显示我想做的事情:

0 投票
0 回答
179 浏览

azure - 实例化 IAsyncCollectors 以手动调用 webjob 函数

是否可以调用 webjobs 函数,其参数由 IAsyncCollectors 组成,由 [Queue] 或 [EventHub] 属性修饰,将与 webjobs SDK 相同类型的收集器传递给函数?

例如,我们想在实现自己的分布式锁定的计时器上触发 webjobs 函数。我们要调用的 webjobs 函数也是由 webjobs SDK 使用 TimerTrigger 触发的,我们希望在这两种情况下使用相同的 IAsyncCollectors。

0 投票
2 回答
117 浏览

azure - 为什么 Azure Queue 消息的存活时间少于几秒钟?

在 Azure(或来自 VS)上,用于在队列中创建新消息的对话框显示消息将在 7 天后过期,但不到几秒钟就消失了。为什么?(我创建了一个持续运行的 WebJob,如本文所述

0 投票
1 回答
190 浏览

azure - Azure 门户 Web 作业执行时间

我知道我的问题不是很具体,也没有明确的答案,但我需要帮助来弄清楚从哪里开始寻找。

所以我们在 azure 门户上工作,并有一个从队列中获取消息并处理它们的 Web 作业;出于某种奇怪的原因,当我使用 S1 计划时(规格:1x 内核,总共 100 个 ACU -我认为它是 azure 的某个单元:azure 计算单元 - 1.75 GB 内存,A 系列计算)每条消息大约需要 1 分钟来处理,但是当我升级 S3 计划时(规格:4 个内核、400 个总 ACU、7 GB 内存、A 系列计算)每条消息需要 3 分钟......我会理解每条消息是否需要与它相同的时间正在线性处理,也许增加处理器可能对它没有太大影响,但它怎么可能让它变慢呢?

如果有任何建议可以帮助我调试此问题,我将不胜感激。

更多信息

Web 应用程序是一个 Visual Studio MVC 项目。

0 投票
1 回答
203 浏览

azure-webjobs - 无法使连续 Azure Webjob 成为单例

我有一个从服务总线队列读取的 Azure 网络作业。我的目标是每个实例同步处理来自队列的 1 条消息。那可能吗?

我观察到,如果队列中有 100 条消息,我会看到 10~20 个 webjob 实例同时运行,每个实例处理来自队列的不同消息。我想将此限制为 1 条消息。到目前为止,我已经尝试了以下方法:

  1. 我创建了一个带有 {"is_singleton": true} 属性的 settings.job 文件。
  2. 我还尝试在函数签名之上使用 [Singleton] 属性。
  3. 我尝试设置属性 config.Queues.BatchSize = 1 和 config.Queues.NewBatchThreshold = 1。

这是我的 webjob 函数的签名:

这些方法似乎都不起作用。

0 投票
0 回答
1010 浏览

dependency-injection - WebJobs 3.0 依赖注入 AddScoped 每个函数调用

对于 WebJobs 3.0,他们建议通过ConfigureServices()使用依赖注入

但是,添加的服务AddScoped()的行为方式与 完全相同AddSingleton():它们是为 WebJob 的生命周期配置的。我希望每个函数调用都有它的范围。我们怎样才能做到这一点?

我尝试使用我的自定义作业激活器并执行以下操作:

但是,这给了我以下错误: The operation cannot be completed because the DbContext has been disposed. 在进行任何调用之前,初始化已被处理。我找不到如何正确连接此范围机制。

目标是每个函数都有范围依赖。目前,这是解决此问题的唯一解决方法。

0 投票
2 回答
421 浏览

api - 从 WebJob 调用 Azure API/WebJob 和 Web api 之间的共享代码

我在 ASE 中有一个 web api 和一个相关的 web 作业。我正在尝试从 Web 作业中调用此 Web api,但它总是因 winhttpexception 失败:发生了安全错误。我已经输入了所有与 tls 相关的设置,但仍然出现错误。关于错误的任何建议?还有一种方法可以在 WebJob 和 web api 之间共享代码吗?

0 投票
1 回答
195 浏览

azure - Azure WebJob 在处理时突然关闭

我有一个连续的 Azure WebJob,设置为“始终开启”。此 WebJob 应该处理添加到存储队列的新消息。

我想知道如果 WebJob 在处理队列触发器时由于某种原因停止工作怎么办。这样我会丢失队列中的消息,它不会进入毒队列。

我该如何解决这个问题?