问题描述
我想创建一个Azure的WebJob发送 BrokeredMessage
到Azure的ServiceBus主题,创建和发送邮件的实际行为是微不足道的,但是我已经无力找到一种方法来自动调度WebJob的创建。
I am trying to create an Azure WebJob to send a BrokeredMessage
to an Azure ServiceBus Topic, the actual act of creating and sending the message is trivial however I have been unable to find a way to automate the creation of the Scheduled WebJob.
在自动化的工作流程应该工作如下:
The automated workflow should work as follows:
- 创建一个新的Azure网站的 [完成]
- 创建一个新的Azure触发上传WebJob一个PS1文件的 [完成]
- 创建一个新的Azure调度作业收集的 [证明的概念]
- 创建一个新的Azure调度工作触发WebJob
在Azure管理门户提供了此功能的漂亮的UI,它在幕后在选定的网站创建的Azure WebJob,湛蓝的调度作业收集和Azure的调度工作:
The Azure Management Portal provides a nice UI for this functionality, which under the covers creates an Azure WebJob in the selected WebSite, an Azure Scheduler Job Collection and an Azure Scheduler Job:
有没有出现是创建与天青服务管理的PowerShell模块调度天青WebJob类似的机制。这当然是可以创建新的,的和 - 但是我不知道在Azure计划程序发布到调度Azure的WebJobs什么URL或存储队列
There doesn't appear to be an analogous mechanism for creating a scheduled Azure WebJob with the Azure Service Management PowerShell Module. It is certainly possible to create new WebJobs, Azure Scheduler Collections and Jobs - however I have no idea what URL or Storage Queue the Azure Scheduler is posting to to schedule Azure WebJobs.
推荐答案
有天青是Scheduler和天青WebJobs之间有着密切的关系。具体的Azure WebJobs不具有任何安排内部支持,WebJobs依赖于天青调度打电话到 *。scm.azurewebsites.net
网站。
There is a close relationship between Azure Scheduler and Azure WebJobs. Specifically Azure WebJobs does not have any internal support for scheduling, WebJobs relies on the Azure Scheduler to call into the *.scm.azurewebsites.net
website.
因此,它有可能使用PowerShell命令对这些服务设置天青WebJobs要使用天青调度时间表触发
As such it is possible to use PowerShell cmdlets for these services to setup Azure WebJobs to be triggered on schedule using Azure Scheduler.
$location = "North Europe";
$site = New-AzureWebsite -Location $location `
-Name "amido-test-website";
$job = New-AzureWebsiteJob -Name $site.Name `
-JobName "amido-test-job" `
-JobType Triggered `
-JobFile ~\Desktop\test.zip;
$jobCollection = New-AzureSchedulerJobCollection `
-Location $location `
-JobCollectionName "amido-test-job-collection";
$authPair = "$($site.PublishingUsername):$($site.PublishingPassword)";
$pairBytes = [System.Text.Encoding]::UTF8.GetBytes($authPair);
$encodedPair = [System.Convert]::ToBase64String($pairBytes);
New-AzureSchedulerHttpJob `
-JobCollectionName $jobCollection[0].JobCollectionName `
-JobName "test" `
-Method POST `
-URI "$($job.Url)\run" `
-Location $location `
-StartTime "2014-01-01" `
-Interval 1 `
-Frequency Minute `
-EndTime "2015-01-01" `
-Headers @{ `
"Content-Type" = "text/plain"; `
"Authorization" = "Basic $encodedPair"; `
};
这是一个有点长用简单的英语上面的脚本啰嗦这么执行以下操作:
It's a little long winded so in plain english the above script does the following:
- 创建一个新的Azure网站。
- 创建和上传新WebJob。
- 创建一个新的Azure调度作业集合。
- 生成HTTP基本身份验证标头值。
- 创建一个新的Azure调度HTTP工作,使经过身份验证的请求* .scm.azurewebsites.net API。
希望这会刮伤他们的头试图找出这一个节省一些其他开发人员。
Hope this saves a few other developers from scratching their head trying to figure this one out.
这篇关于创建PowerShell中预定的Azure WebJob的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!