问题标签 [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.
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 在通过此过程部署时会引发错误。
c# - 我可以查询 Azure Web 作业队列吗?
我的 Azure Web 应用程序中运行了两个 Azure Web 作业:
- 作业 A - 连续运行
- 作业 B - 触发
Job A 的目的是基于两件事触发 Job B:
- 作业 B 在过去一小时内未针对指定的帐号运行(作为作业 A 的参数传递到作业 B。
- 从数据库中确定的其他一些业务逻辑
#2 很简单。我有一个问题是#1。作业 A 是否可以查询 Web 作业队列以查看作业 B 是否已执行?
这是作业 B(已触发):
这是作业 A(连续运行)。我在注释中添加了代码以显示我想做的事情:
azure - 实例化 IAsyncCollectors 以手动调用 webjob 函数
是否可以调用 webjobs 函数,其参数由 IAsyncCollectors 组成,由 [Queue] 或 [EventHub] 属性修饰,将与 webjobs SDK 相同类型的收集器传递给函数?
例如,我们想在实现自己的分布式锁定的计时器上触发 webjobs 函数。我们要调用的 webjobs 函数也是由 webjobs SDK 使用 TimerTrigger 触发的,我们希望在这两种情况下使用相同的 IAsyncCollectors。
azure - 为什么 Azure Queue 消息的存活时间少于几秒钟?
在 Azure(或来自 VS)上,用于在队列中创建新消息的对话框显示消息将在 7 天后过期,但不到几秒钟就消失了。为什么?(我创建了一个持续运行的 WebJob,如本文所述)
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 项目。
azure-webjobs - 无法使连续 Azure Webjob 成为单例
我有一个从服务总线队列读取的 Azure 网络作业。我的目标是每个实例同步处理来自队列的 1 条消息。那可能吗?
我观察到,如果队列中有 100 条消息,我会看到 10~20 个 webjob 实例同时运行,每个实例处理来自队列的不同消息。我想将此限制为 1 条消息。到目前为止,我已经尝试了以下方法:
- 我创建了一个带有 {"is_singleton": true} 属性的 settings.job 文件。
- 我还尝试在函数签名之上使用 [Singleton] 属性。
- 我尝试设置属性 config.Queues.BatchSize = 1 和 config.Queues.NewBatchThreshold = 1。
这是我的 webjob 函数的签名:
这些方法似乎都不起作用。
dependency-injection - WebJobs 3.0 依赖注入 AddScoped 每个函数调用
对于 WebJobs 3.0,他们建议通过ConfigureServices()使用依赖注入
但是,添加的服务AddScoped()
的行为方式与 完全相同AddSingleton()
:它们是为 WebJob 的生命周期配置的。我希望每个函数调用都有它的范围。我们怎样才能做到这一点?
我尝试使用我的自定义作业激活器并执行以下操作:
但是,这给了我以下错误:
The operation cannot be completed because the DbContext has been disposed.
在进行任何调用之前,初始化已被处理。我找不到如何正确连接此范围机制。
目标是每个函数都有范围依赖。目前,这是解决此问题的唯一解决方法。
api - 从 WebJob 调用 Azure API/WebJob 和 Web api 之间的共享代码
我在 ASE 中有一个 web api 和一个相关的 web 作业。我正在尝试从 Web 作业中调用此 Web api,但它总是因 winhttpexception 失败:发生了安全错误。我已经输入了所有与 tls 相关的设置,但仍然出现错误。关于错误的任何建议?还有一种方法可以在 WebJob 和 web api 之间共享代码吗?
azure - Azure WebJob 在处理时突然关闭
我有一个连续的 Azure WebJob,设置为“始终开启”。此 WebJob 应该处理添加到存储队列的新消息。
我想知道如果 WebJob 在处理队列触发器时由于某种原因停止工作怎么办。这样我会丢失队列中的消息,它不会进入毒队列。
我该如何解决这个问题?