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

azure - Azure WebJobs - 我可以使用异步方法吗?

我想知道 Azure WebJobs SDK 是否可以触发异步方法?目前我有一个如下所示的方法:

但是,我想知道是否可以让 JobHost 知道调用我的异步方法?没有大量关于尝试在 WebJobs 中使用 async/await 的文档,如果可以的话,那就太好了。

我正在尝试在本地运行它以进行测试……但 WebJobs SDK 不支持本地存储模拟器……

2014 年 4 月 7 日更新:维克多的回答是正确的,但我确实想展示在 WebJob 中使用异步方法会看到什么(它们确实有效)。

对于您的 WebJob 中的方法,如下所示:

您将在 WebJobs 日志中看到以下输出:

0 投票
2 回答
81 浏览

azure-webjobs - 是否可以扩展 WebJobs SDK?

有没有办法扩展 Azure WebJobs SDK?如果我想要队列、blob 或表格以外的东西来触发我的工作职能。

0 投票
1 回答
642 浏览

azure-web-app-service - WebJobs 未重试失败的队列消息

我在使用新的 0.3.0-beta WebJobs SDK 的 WebJob 中有以下逻辑。当我的代码无法处理消息时,Azure 仪表板会显示一个聚合异常(这是有道理的,因为这是异步的)。但是,它不会重试处理该消息。

我能找到的极少文档表明该消息应在失败后 10 分钟内重试。新的SDK不是这样吗?

我得到的异常源于 SQL Timeout 异常(它在我的代码中是针对 SQL Azure 的 db 查询):

0 投票
2 回答
1264 浏览

azure-webjobs - Azure Webjobs - 在 app.config 上定义 QueueName 触发器

随着 Azure Webjobs 3.0.0 SDK 的新版本发布: http ://azure.microsoft.com/blog/2014/06/18/announcing-the-0-3-0-beta-preview-of- microsoft-azure-webjobs-sdk/

改进的功能发现

我们添加了 ITypeLocator 和 INameResolver 来自定义 WebJobs SDK 的外观 > 功能。这可以实现以下场景:

  1. 您可以定义 QueueName 不明确的函数。您可以从配置源读取队列名称并在运行时指定此值。
  2. 将函数发现限制在特定的类或程序集中。
  3. 索引时的动态函数:您可以在运行时定义函数签名。

但是没有关于如何做到这一点的示例代码。

有谁知道如何在运行时定义队列名称(例如来自 app.config)?

0 投票
1 回答
244 浏览

azure - 最新的 webjob 更新 0.3.0 后无法将流输出到 blob

我正在使用 azure webjobs 并作为作业的输出,我将流写入这样的 blob

到目前为止它工作正常,但在更新到版本之后。0.3.0,我得到一个绑定异常。它应该工作还是实现 ICloudBlobStreamBinder 的前进方向?

在此处查看示例http://azure.microsoft.com/blog/2014/06/18/announcing-the-0-3-0-beta-preview-of-microsoft-azure-webjobs-sdk/输入和输出都是一个blob。但在我的情况下,我从队列中收到一条消息作为触发器。

0 投票
2 回答
3196 浏览

azure - Azure Web 作业功能状态为“从未完成”

我在 azure 中创建了一个网络作业。Web 作业是一种连续运行。当队列中有消息时调用的 Web 作业函数。我可以通过 Azure 存储资源管理器或 mvc Web 应用程序在队列中添加消息来调用 Web 作业功能。

Web 作业是一个控制台应用程序,通过在本地使用命令行运行来执行一项工作大约需要一个小时。调用 Web 作业后,它成功启动,但过了一段时间(大约 5-10 分钟),我在 Web 作业日志中发现功能 Invoke status 为“Never Finished”。

所以我的问题如下: -

1)这个问题是由于长时间运行的任务造成的吗?

2)这个问题是由于处理过程中的任何错误造成的吗?(但我可以在本地运行它)

3)如果我从网络作业添加的数据库中删除记录,那么我发现网络再次启动。为什么?

4)如果我需要在处理完成后从队列中删除消息?

这是我从网络作业调用的代码片段

}

编辑:-

我在天蓝色中遇到以下错误..

[07/10/2014 15:50:52 > 32a9e0: ERR ] 未处理的异常:Microsoft.WindowsAzure.Storage.StorageException:远程服务器返回错误:(404) 未找到。---> System.Net.WebException:远程服务器返回错误:(404)未找到。

[07/10/2014 15:50:52 > 32a9e0: ERR ] 在 System.Net.HttpWebRequest.GetResponse()

[07/10/2014 15:50:52 > 32a9e0: ERR ] 在 Microsoft.WindowsAzure.Storage.Core.Executor.Executor.ExecuteSync[T](RESTCommand`1 cmd,IRetryPolicy 策略,OperationContext operationContext)

[07/10/2014 15:50:52 > 32a9e0: ERR ] --- 内部异常堆栈跟踪结束 ---

[07/10/2014 15:50:52 > 32a9e0: ERR ] 在 Microsoft.WindowsAzure.Storage.Core.Executor.Executor.ExecuteSync[T](RESTCommand`1 cmd,IRetryPolicy 策略,OperationContext operationContext)

[07/10/2014 15:50:52 > 32a9e0: ERR ] 在 Microsoft.WindowsAzure.Storage.Queue.CloudQueue.UpdateMessage(CloudQueueMessage 消息,TimeSpan visibilityTimeout,MessageUpdateFields updateFields,QueueRequestOptions 选项,OperationContext operationContext)

[07/10/2014 15:50:52 > 32a9e0: ERR ] 在 Microsoft.Azure.Jobs.UpdateQueueMessageVisibilityCommand.TryExecute()

[07/10/2014 15:50:52 > 32a9e0: ERR ] 在 Microsoft.Azure.Jobs.LinearSpeedupTimerCommand.Execute()

[07/10/2014 15:50:52 > 32a9e0: ERR ] 在 Microsoft.Azure.Jobs.IntervalSeparationTimer.RunTimer(对象状态)

[07/10/2014 15:50:52 > 32a9e0: ERR ] 在 System.Threading.TimerQueueTimer.CallCallbackInContext(对象状态)

[07/10/2014 15:50:52 > 32a9e0: ERR ] 在 System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext,ContextCallback 回调,对象状态,布尔值 preserveSyncCtx)

[07/10/2014 15:50:52 > 32a9e0: ERR ] 在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext,ContextCallback 回调,对象状态,布尔值 preserveSyncCtx)

[07/10/2014 15:50:52 > 32a9e0: ERR ] 在 System.Threading.TimerQueueTimer.CallCallback()

[07/10/2014 15:50:52 > 32a9e0: ERR ] 在 System.Threading.TimerQueueTimer.Fire()

[07/10/2014 15:50:52 > 32a9e0: ERR ] 在 System.Threading.TimerQueue.FireNextTimers()

[07/10/2014 15:50:52 > 32a9e0: ERR ] 在 System.Threading.TimerQueue.AppDomainTimerCallback()

[07/10/2014 15:50:52 > 32a9e0: 信息] .................... ..................................................... ..................................................... ................ [07/10/2014 15:50:52 > 32a9e0: SYS ERR] 由于退出代码 -532462766,作业失败

[07/10/2014 15:50:52 > 32a9e0: SYS INFO] 进程关闭,等待 0 秒

[07/10/2014 15:50:52 > 32a9e0: SYS INFO] 状态更改为 PendingRestart

[07/10/2014 15:50:57 > 32a9e0: SYS INFO] 使用脚本主机 - 'WindowsScriptHost' 运行脚本'Scheduler.exe'

[07/10/2014 15:50:57 > 32a9e0: SYS INFO] 状态更改为正在运行

因此,查看错误,我尝试在本地从控制台应用程序执行相同的功能及其工作。多次运行后,我发现该功能正在执行 5 分钟。因此,如果有任何时间限制在 Web 作业中运行任何功能。

谢谢。

0 投票
2 回答
1706 浏览

azure-webjobs - 在 Azure WebJobs 0.3 Beta 中多次触发 BlobTrigger 作业

升级到 WebJobs 0.3 beta 后,Azure WebJobs 在将 Blob 发布到存储时多次调用我的方法(使用 BlobTrigger 作为输入)。在控制台和 Azure 中进行本地测试时都会发生这种情况。就我而言,我使用 BlobTrigger,然后发布到队列中,如下所示:

队列收到两条消息,在 webjobs azure 仪表板中,它确实显示了被调用两次的函数。

为什么是这样?

0 投票
2 回答
1425 浏览

azure - 使用 IBinder 删除 blob 的 webjobs

好的,我意识到 webjobs sdk 仍处于测试阶段,但它非常酷。尽管在获取我绑定的实际对象方面,我在 IBinder 上有点挣扎。这可能很明显,所以如果是,请原谅我......

我正在处理要通过网络作业发送的电子邮件。他们被放入队列并触发事件。此代码有效.. 但我不禁想到我可以访问生成的 blob,如果成功则删除它,或者如果不成功则移动它,更容易。

这是代码:

如您所见,我可以使用 binder.Bind 块获取 blob 内容,但随后我需要执行整个连接操作才能将其删除.. 这不对.. 可以吗?

0 投票
1 回答
128 浏览

azure - 使用 WebJob SDK 时,有没有办法抑制 Azure WebJob 调用日志?

有谁知道在使用 Azure WebJob SDK 时是否可以控制将哪些信息写入 WebJob 调用日志?我正在处理一个队列,其中包含我不希望存储或显示在日志中的敏感信息。这可能吗?

任何帮助将不胜感激,

干杯,菲尔。

0 投票
1 回答
683 浏览

azure - dll/exe 中的多个 Azure WebJob 端点

我正在创建一个 Azure 网络作业,但有些事情我不清楚。我设想它将允许我创建一个类(或实际上是控制台 exe 应用程序)和一个 Main 方法。

我的想法是我将拥有多个可由网络作业触发的公共方法。例如。我可能有一个方法 Import 和一个称为 Process 的方法。导入可能每周发生一次,流程每天发生一次。Import 甚至可能在内部触发 Process 等。我假设我可以用我可以在 Azure 门户中单独配置的属性来装饰这个公共方法。

这是一厢情愿吗?我看到大量示例,我们使用 Main 进行一些初始配置,然后有一个侦听器或直接进入您的处理代码。

有可能做我所设想的吗?文档对此并不完全清楚。