我是Azure WebJobs的新用户,我运行了一个示例,其中用户将图像上传到blob存储并将记录插入到队列中,然后作业从队列中检索该记录作为信号到做一些像上传图片调整大小的事情。基本上在代码中,作业使用公共静态方法上的QueueTrigger
属性来完成所有这些。
现在我需要一个工作,就像每小时将一条记录插入一个数据库表,它没有任何类型的触发器,它只是自己运行。我该怎么做?
我尝试了一个静态方法,并在其中插入到db,工作确实开始,但我收到一条消息说:
找不到任何功能。尝试将工作类公开,方法公开 静态的。
我错过了什么?
修改 在Victor的回答之后我尝试了以下内容,
static void Main()
{
JobHost host = new JobHost();
host.Call(typeof(Program).GetMethod("ManualTrigger"));
}
[NoAutomaticTrigger]
public static void ManualTrigger()
{
// insert records to db
}
但这次我得到InvalidOperationException
,
' Void ManualTrigger()'无法从Azure WebJobs SDK调用。是否缺少Azure WebJobs SDK属性?
答案 0 :(得分:16)
如果您不使用WebJobs SDK(QueueTrigger,Blob,Table等)中的任何输入/输出属性,则必须使用NoAutomaticTrigger
属性来装饰作业,以便SDK识别。< / p>
答案 1 :(得分:3)
您可以使用最新的WebJobs SDK,它支持基于相同的CRON表达格式按计划触发作业功能。 您可以使用它来每小时安排工作:
<TAG1>
此外,WebJobs SDK还有一个可应用于函数的DisableAttribute,允许您根据应用程序设置启用/禁用功能。如果更改Azure管理门户中的应用程序设置,则将重新启动作业(https://azure.microsoft.com/en-us/blog/extensible-triggers-and-binders-with-azure-webjobs-sdk-1-1-0-alpha1/)。