我想要从Azure网站调用Azure webjob。我想将字符串参数从网站传递到webjob。
我知道我可以将webjob作为REST API(https://github.com/projectkudu/kudu/wiki/Web-jobs)调用。
所以我可以在没有任何参数的情况下调用webjob:POST jobs / triggered / myjobname / run
但最后添加参数似乎不起作用,即jobs / triggered / myjobname / run?myparam1 = value1
我在使用Microsoft.WindowsAzure.Jobs中的属性进行绑定时看到的信息没有提到我的情况,只是绑定到Azure存储项(http://blogs.msdn.com/b/jmstall/archive/2014/01/28/trigger-bindings-and-route-parameters-in-azurejobs.aspx)。
我想做的是可行的吗?我是否需要执行诸如在Azure存储队列中创建新项目以触发我的webjob之类的操作?
感谢。
答案 0 :(得分:10)
您可以使用以下地址调用带有参数的azure webjob: " https://mywebsite.scm.azurewebsites.net/api/triggeredwebjobs/mywebjob/run?arguments=myparameter"
class Program
{
static void Main(string[] args)
{
if (args[0]=="myparameter")
...
}
}
答案 1 :(得分:8)
如果您想从您的网站调用WebJob,您可以做的最好的事情就是在您的网站内部使用WebJob代码并简单地调用该代码,您仍然可以轻松地从您的网站内部使用WebJob SDK。 (用于调用WebJobs SDK方法示例:http://thenextdoorgeek.com/post/WAWS-WebJob-to-upload-FREB-files-to-Azure-Storage-using-the-WebJobs-SDK)。
您不希望从您的网站调用WebJob的原因是该调用包含您不会存储在您的网站上的秘密(部署凭据)。
如果您更喜欢将WebJob和网站代码分开,最好的办法是使用队列进行通信,WebJob会侦听队列,并且网站会将请求推送到队列。
关于原始问题,目前无法将参数传递给WebJob调用调用。
答案 2 :(得分:4)
我花了一些时间来弄清楚如何使用Azure门户UI(而不是Post Api / Kudu)使用参数设置作业,所以这里是以下步骤:
在WebApp上创建Webjob
在“计划程序作业集合”,“计划程序作业”列表中的某个区域集合中找到Web作业
更改作业“操作设置”中的网址,并将?arguments=<myArgument>
附加到该网址,使其最终显示为:
...scm.azurewebsites.net/api/triggeredwebjobs/<my-job-name>/run?arguments=<myArgument>
答案 3 :(得分:2)
记录的方法是将一个或多个Azure队列消息放入队列。每条消息都应包含足够的参数信息,以使您的webjob能够做到这一点。
在您的WebJob中,使用QueueTriggerAttribute允许Azure在收到相应的队列消息时自动启动WebJob。
详情