问题标签 [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 投票
4 回答
4285 浏览

azureservicebus - 为什么 Azure WebJob ServiceBus 默认反序列化 XML?

我有一个简单的 Azure WebJobs ServiceBusTrigger 看起来像

不幸的是,它无法将 JSON 反序列化为 XML(不足为奇)。我检查了有效载荷并确认它只是一个 UTF-8 编码的字节数组。我有两个问题。

  1. 为什么假设我的字符串是 XML?
  2. 我如何告诉它不,没有 XML,只有一个字符串?

堆栈跟踪:

编辑:WebJobs 文档建议不仅我所做的工作(String)而且 ServiceBusTrigger 应该自动反序列化 JSON 对象。但是,如果我尝试取出我的 POCO,我仍然会收到 XML 反序列化错误。有趣的是,如果我将类型设置为 Byte[],我也会收到 XML 反序列化错误,这也应该可以工作。

编辑2:Stream也不起作用。似乎只有BrokeredMessage 对触发器有效,而 GetBody 是我能找到的从 BrokeredMessage 中获取字符串的唯一方法。

0 投票
2 回答
1439 浏览

azure - Azure WebJob 未处理所有 Blob

我将压缩文件上传到 Azure 存储容器(输入)。然后我有一个 WebJob,它应该拾取 Blob,解压缩它们并将它们放入另一个容器(输出)。两个容器使用相同的存储帐户。

我的问题是它不能处理所有 Blob。它似乎总是错过 1。今天早上,我将 11 个 blob 上传到输入容器,只有 10 个被处理并转储到输出容器中。如果我上传 4 则 3 将被处理。即使已上传 11 个 blob,仪表板仍将显示 10 个调用。看起来它不会被第 11 个 blob 触发。如果我只上传 1 它似乎会处理它。

我在标准模式下运行网站,并将 Always On 设置为 true。

我努力了:

这是我最新的代码。难道我做错了什么?

0 投票
10 回答
7700 浏览

azure - 创建 WebJob 计划时出错

我试图发布我的网站以及一些 WebJobs,但是在 Azure 网站上创建网站和工作之后,我在 VS.NET 2013 上看到一个错误,上面写着:

我的网站有 2 个 WebJobs,1 个连续运行并且它已创建并运行,但需要按计划触发的那个有此问题。

关于这里可能有什么问题的任何想法?

编辑 1

只是想补充一点,计划作业被创建为“按需”

这是我正在使用的发布设置:

顺便说一句,我应用 AzureSDK 之后。2.5 我在发布时没有看到任何错误,但没有创建计划的 WebJob。

0 投票
2 回答
10365 浏览

azure - 为什么我需要在 Azure 管理门户中而不是在我的 WebJob 的 App.config 中为 WebJobs 配置连接字符串?

我通过右键单击我的 WebApp 项目并添加一个新的 Azure Web 项目来创建一个计划的 Azure WebJob。我在 WebJob 项目的 App.config 中设置了 AzureWebJobsDashboard 和 AzureWebJobsStorage 连接字符串。我暂时将默认代码留在 .cs 文件中。接下来,我从 Visual Studio(顺便说一下 2013 Update 4)发布到 Azure 网站。它创建了 WebJob,我可以从 Azure 管理站点或 Visual Studio 运行它,它是成功的。我可以看到我期望的输出日志。但是,Azure WebJob 详细信息页面显示以下警告/错误:

确保在 Microsoft Azure 网站配置中设置名为 AzureWebJobsDashboard 的连接字符串,方法是使用以下格式 DefaultEndpointsProtocol=https;AccountName=NAME;AccountKey=KEY 指向存储 Microsoft Azure WebJobs 运行时日志的 Microsoft Azure 存储帐户。

没有为 Microsoft Azure WebJobs 仪表板正确设置配置。在您的 Microsoft Azure 网站配置中,您必须使用以下格式设置名为 AzureWebJobsDashboard 的连接字符串 DefaultEndpointsProtocol=https;AccountName=NAME;AccountKey=KEY 指向存储 Microsoft Azure WebJobs 运行时日志的 Microsoft Azure 存储帐户。

它还提供了指向http://azure.microsoft.com/blog/2013/07/17/windows-azure-web-sites-how-application-strings-and-connection-strings-work/的链接'不解释为什么我收到错误消息。

现在,为了消除此警告/错误,我将在 Azure 管理站点的配置页面中添加相同的 AzureWebJobsDashboard 连接字符串。

因此,我试图弄清楚我是否做错了什么,或者这是否只是 Microsoft 尚未修复的 WebJobs 中的一个问题。我真的希望能够在 App.config 中拥有它,而不是必须记住在我们为不同环境生成的每个网站中进行设置。

非常感谢您的时间和帮助。

0 投票
1 回答
521 浏览

azure-webjobs - 按计划为 WebJob 动态命名 Blob

我有一个基于 WebClient 调用的返回值创建 blob 的网络作业。这工作正常。但是从 Blob 属性中可以看出(见下面的代码),文件的名称是静态的。因此,它每次在 blob 存储中都会被覆盖。

函数类:

主菜单:

如何使用占位符动态命名传入文件?

我已经尝试过以下方法:

  1. 幽灵/{name}
  2. 幽灵/{BlobName}

其他需要注意的事项:

此作业按计划运行,因此主机不会运行和阻塞此作业不会被触发器调用,它只是唤醒并运行;因为源不是来自消息队列对象或上传的文件,所以我无法弄清楚我应该如何命名这个 blob。

也许以某种方式直接使用 blob 存储 API?

0 投票
1 回答
1177 浏览

azure-webjobs - 重新部署网站后,在连续的 Azure WebJob 上运行进程会发生什么情况?

我在此处使用 WEBJOBS_SHUTDOWN_FILE 和此处使用 Cancellation Tokens 阅读了有关正常关闭的信息,因此我了解正常关闭的前提,但是我不确定它们将如何影响正在处理队列消息的 WebJobs。

所以这是场景:

  1. 我有一个带有监听队列功能的 WebJob。
  2. 消息被添加到队列并且作业开始处理。
  3. 在处理过程中,有人推动开发,触发重新部署。

假设我已将 WebJobs 连接到 git push 上部署,此部署还将触发 WebJobs 被更新,这(据我所知)将启动作业中的某种关闭工作流。所以我有几个问题源于此。

  1. 正在处理队列消息的作业会在作业退出之前完成对消息的处理吗?或者任何关闭通知本质上都被视为“这个婊子即将关闭。如果你没有任何东西可以处理它,你就是 SOL。”
  2. 如果我们是 SOL,那么我们处理关闭的最佳选择是否本质上是将您正在做的任何事情包装在相当于 DB 事务中并以所有更改在关闭时回滚的方式实现您的关闭处理程序?
  3. 如果队列消息正在处理中并且 WebJob 关闭,该消息是否会重新排队?如果不是,这是否意味着我的关闭处理程序需要处理重新排队该消息?
  4. 在通知作业需要关闭后,监听队列的函数是否有可能获取更多队列消息?

非常感谢这里的任何指导!此外,如果除了我提到的之外,还有其他关于如何处理作业关闭的有用链接,如果您能分享这些链接,那就太好了。

0 投票
3 回答
9221 浏览

c# - Azure WebJobs 和 ServiceBusTrigger

Azure WebJobs SDK 的毒消息处理如何工作ServiceBusTrigger?我希望将出列次数超过“x”次的服务总线队列消息推送到不同的服务总线(或)存储队列

此处此处的在线文档以及此处的 SDK 示例没有关于 ServiceBusTrigger 的毒消息处理如何工作的示例。这项工作正在进行吗?

我尝试使用dequeueCount参数实现自定义毒消息处理,但它看起来不支持 ServiceBusTriggers,因为我遇到了运行时异常{"Cannot bind parameter 'dequeueCount' when using this trigger."}

0 投票
3 回答
18223 浏览

azure - Azure WebJobs 连接字符串配置 (AzureWebJobsDashboard??)

我正在尝试使用 Azure Webjobs,我了解它的工作方式,但我不明白为什么我需要使用两个连接字符串,一个用于保存消息的队列,但是

  1. 为什么还有另一个叫“AzureWebJobsDashboard”?

  2. 它的目的是什么?

  3. 我从哪里得到这个连接字符串?

目前我在同一个解决方案中有一个 Web App 和一个 Webjob,我只在本地进行实验(没有发布任何内容),我在云中起床的一件事是保存队列的存储帐户。

我什至尝试在两个地方(AzureWebJobsDashboard,AzureWebJobsStorage)都放置相同的连接字符串,但它抛出异常:“使用此触发器时无法绑定参数'log'。”

谢谢你。

0 投票
2 回答
5352 浏览

azure-webjobs - 更新(重新部署)现有的 azure webjob

我创建了一个按需网络作业。在管理门户中,没有选项可以上传新的 zip 来更新它。
我可以删除现有的 webjob 并创建一个新的,但我想保留我的日志。
有没有办法重新部署它,覆盖旧版本,维护日志?

0 投票
2 回答
8913 浏览

azure - 连续 WebJob 自动停止

我有一个与网站关联的 Web 作业,它被配置为连续运行,它所做的只是监视队列中的消息并进行处理。

我的网站处于共享模式,目前几乎没有任何流量,因此我设置了每 1 分钟请求一次主页的虚拟服务,以防止网站在此测试中被关闭,并且可以正常工作正如预期的那样,我可以注意到网站本身并没有关闭。但是,除非我转到 Azure 管理门户并查找 webjob 状态,否则此 webjob 会在大约一个小时内关闭。我去那里的那一刻,它再次启动,然后在几分钟到一个小时内关闭。

此网络作业的日志文件显示如下内容:

我可以看到我的网站仍在运行并返回主页,但工作本身已停止。

现在,当我登录管理门户查找状态时,我可以在日志中看到:

只要网站处于活动状态,关于如何确保 Webjob 处于活动状态的任何想法?或者至少使网站在返回运行状态时也启动 webjob。

更新 1

我的 webjob 本身是一个非常简单的,如下所示:

并且触发函数看起来接近于这样:

有什么我必须在这里做的,以表明这项工作应该遵循网站的生命周期,即每次启动网站时启动。

更新 2

我试图查看 Process Explorer,当 WebJobs 停止时,我看到了三件事之一。如果不转到管理门户,我不知道如何查看作业日志,因此目前不知道实际的日志。

有时这 有时我看到这个 在此处输入图像描述

但我确信作业没有运行,因为它不会处理队列中的任何消息,直到我进入管理门户。

pingdom 结果如下图所示,表明网站本身正在运行,没有任何中断: Ping Dom 结果

问候基兰