任何人都可以解释Azure Web Jobs和Azure Scheduler之间的区别
我在使用新的0.3.0-beta WebJobs SDK的WebJob中有以下逻辑.当我的代码处理消息失败时,Azure仪表板会显示聚合异常(这是有意义的,因为这是异步).但是,它不会重试处理消息.
我能够找到的文档非常少,表明该消息应在失败后的10分钟内重试.新SDK不是这种情况吗?
public static Task ProcessMyMessageAsync(
[QueueTrigger(Config.MY_QUEUE)] string msg,
int dequeueCount,
CancellationToken cancellationToken)
{
var processor = Config.Container.GetInstance<IMessageProcessor>();
return processor.HandleJobAsync(msg, dequeueCount, cancellationToken);
}
Run Code Online (Sandbox Code Playgroud)
我得到的异常源于SQL Timeout异常(我的代码中针对SQL Azure的db查询):
System.AggregateException: System.AggregateException: One or more errors occurred.
---> System.Data.Entity.Core.EntityCommandExecutionException: An error occurred while executing the command definition. See the inner exception for details.
---> System.Data.SqlClient.SqlException: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
---> System.ComponentModel.Win32Exception: The wait operation timed out
Run Code Online (Sandbox Code Playgroud) 我已经远远地看了解答案.在Visual Studio 2013中,我可以轻松地创建WebRole和WorkerRole解决方案,但在VS 2015中,我似乎只能创建一个网站和WebJob.
WebRole和WorkerRole已被删除吗?如果没有,你可以向我解释它在哪里 - 或者为什么它会丢失?
azure-worker-roles azure-web-roles azure-webjobs visual-studio-2015
如果安排Azure WebJob运行但先前运行的实例尚未完成,会发生什么?它会再次运行WebJob,以便两个一次运行吗?它不会运行WebJob并开始计时吗?我无法在任何地方找到这种行为.我有一份工作,我想每小时运行,但有时可能需要一个多小时才能完成,但我从不希望其中两个一次运行.
在网上阅读了大量关于Azure WebJobs的信息之后,文档说工作应该是幂等的,另一方面,博客说他们使用WebJobs做"收取客户费用","发送电子邮件"等行为.
该文档说,在具有队列的多个实例上运行连续的WebJob可能会导致多次调用.人们是否真的忽略了他们可以向客户收取两次费用或两次发送电子邮件的事实?
如何确保我可以在扩展的Web应用程序上运行带有队列的WebJob,并且只处理一次消息?
我正在运行Azure webjob和Azure webapp.作业定期运行,并且需要在webapp中完成作业.我如何在那里得到结果?
我尝试使用WCF,netNamedPipeBinding但由于Azure webapps没有启动任务,因此无法将net.pipe绑定添加到IIS网站,也无法启用net.pipe协议.
我现在有一个工作,basicHttpBinding但这个绑定暴露给我绝对不想要的整个互联网.我只想在同一台机器上运行的webjob和webapp之间进行机器本地通信.
更正:我认为我在Azure上工作但事实并非如此.在Azure上运行时,我从webjob收到错误:( An attempt was made to access a socket in a way forbidden by its access permissions 127.0.0.1:80使用basicHttpBinding).可能webapp有一个我不知道的内部端口号.
如何在上次运行结果失败或连续的Web作业未运行时监视azure Web作业?
我发现cloudmonix确实有效.那里还有其他产品吗?
Zapier只能触发不能连续运行的触发式Web作业.
我试图弄清楚是否可以制作一个Azure webjob,并按照每1分钟一次的方式安排它,并让它能够被队列触发.我设法将这两个要求分开,但没有合并到一个工作中.
我知道为了使它们在队列上触发,我需要使用JobHost和一个带有捕获触发器的方法的Functions类.这仍会阻止调度程序,只处理触发器
当我省略JobHost时......那么时间表就完美了.我很确定我会提出一个矛盾,只需要做两个单独的工作,但也许你们中的一个人面对同样的事情并设法实现它.
有没有办法以编程方式启用/禁用Azure功能?
我可以使用"管理"部分下的门户启用/禁用功能,这会导致发送请求 https://<myfunctionapp>.scm.azurewebsites.net/api/functions/<myfunction>
JSON有效负载看起来有点像:
{
"name":"SystemEventFunction",
"config":{
"disabled":true,
"bindings":[
// the bindings for this function
]
}
// lots of other properties (mostly URIs)
}
Run Code Online (Sandbox Code Playgroud)
我正在门户外创建一个管理工具,允许用户启用和禁用功能.
希望我可以避免手动创建JSON有效负载,所以我想知道SDK(WebJobs ??)中是否存在具有此功能的内容.
在执行右键单击项目时获取以下消息 - >调试 - >启动新实例.
[1/7/2018 6:48:54 AM]发生ScriptHost错误[1/7/2018 6:48:54 AM]执行HTTP请求:{[1/7/2018 6:48:54 AM] Microsoft .Azure.WebJobs.Host:错误索引方法'TestFilesIngestJobs.RunScheduleAsync'.Microsoft.Azure.WebJobs.Host:无法绑定参数'log'以键入TraceWriter.确保绑定支持参数Type.如果您正在使用绑定扩展(例如ServiceBus,Timers等),请确保您已在启动代码中调用扩展的注册方法(例如config.UseServiceBus(),config.UseTimers()等).[1/7/2018 6:48:54 AM]"requestId":"dbb282d7-44e2-44b4-907e-877beac9da2d",[1/7/2018 6:48:54 AM]错误索引方法'MasterDataFilesIngestJobs.RunScheduleAsync' [1/7/2018 6:48:54 AM]"方法":"GET",