我正在开发一个我打算在Windows Azure上托管的网站.该站点需要运行一些每日/每周预定作业,同步到各种第三方数据源,发送用户通知等.它还应该能够运行按需异步任务,例如向用户发送电子邮件等.
我最初的想法是使用Azure云服务来托管它,一个运行MVC 4的Web角色和一个辅助角色都负责计划任务,并将异步任务(发送电子邮件等)从队列存储中拉出来.然而,这将花费我,看看我需要为计算时间支付双倍的费用.
该项目可能在未来证明这一成本是合理的,但在业务开始之前,我真的更喜欢更便宜的替代品.因此,我正在研究Azure网站.
我可以通过将Azure网站用于MVC站点并让工作人员角色运行这些成本来减少一半的成本,但我很想知道其他替代方案,除了从我的管理模块手动触发它们的明显选项.
此外,我可以将网站连接到我的域并使用Azure网站免费使用ssl吗?
此问题与此相关:运行Azure WebJob而不使用队列
我的场景:我只想每小时将一个文件写入blob存储,不需要任何队列系统.从前一个问题我得到了这个代码 - 它第一次被触发时工作正常:
[NoAutomaticTrigger]
public static void DoWork([Blob("container/foobar.txt")] TextWriter writer)
{
writer.Write("Hello World " + DateTime.Now.ToShortTimeString())"
}
static void Main()
{
JobHost host = new JobHost();
host.Call(typeof(Program).GetMethod("DoWork"));
host.RunAndBlock();
}
Run Code Online (Sandbox Code Playgroud)
网站运行"AlwaysOn = true",webjob一直在"运行",但现在调度程序抛出了以下错误 - 没有任何反应:"由于作业已经运行,无法启动新的运行."
目前的结果是文件只写了一次.如果我将"AlwaysOn"切换为false,它"工作",但它似乎很脏,因为如果没有Always on the job结果是"Aborted".
我打算使用WebJobs作为NServiceBus的轻量级替代品,但是想要首先验证可以从触发的WebJob处理程序中进行例行SQL Azure数据库查询吗?我的数据库访问将通过EntityFrameworks.
这个SO线程表明WebJobs不支持SQL数据库,但我希望这只是意味着SQL数据库不能用作WebJob处理程序的触发机制?
Azure Web作业 - 如何连接到Azure MS SQL数据库?
我没有找到发布SQL数据库查询的WebJob示例,但由于WebJob可以访问与主WebSite相同的应用程序配置,我假设可以使用数据库连接详细信息?
如何在创建多个具有1个功能的WebJobs并将多个功能捆绑到一个或仅仅几个WebJobs之间做出决定?谢谢
我有一个Azure WebJob在使用以下日志输出运行20分钟后失败:
[02/27/2015 00:30:11 > 3e9b72: SYS INFO] Status changed to Initializing
[02/27/2015 00:30:21 > 3e9b72: SYS INFO] Run script 'Namespace.Class.DataProcessor.exe' with script host - 'WindowsScriptHost'
[02/27/2015 00:30:21 > 3e9b72: SYS INFO] Status changed to Running
[02/27/2015 00:30:23 > 3e9b72: INFO] Found the following functions:
[02/27/2015 00:30:23 > 3e9b72: INFO] Namespace.Class.DataProcessor.Functions.ManualTrigger
[02/27/2015 00:30:23 > 3e9b72: INFO] Executing: 'Functions.ManualTrigger' because This was function was programmatically called via the host APIs.
[02/27/2015 00:51:35 > 3e9b72: ERR ] Thread was being aborted.
[02/27/2015 …Run Code Online (Sandbox Code Playgroud) 我有一个与网站相关联的连续webjob,我在共享模式下运行该网站.我不想转到Always On选项,因为我的应用程序并不需要.我只想在给我的网站打电话时处理这条消息.
我的问题是,几分钟后工作仍然停止,即使我每隔5分钟在我的网站上不断调用一个虚拟保持方法,该方法将消息发布到由该webjob监视的队列中.
我的webjob是一个使用WebJob SDK构建的简单控制台应用程序,它具有这样的代码
JobHost host = new JobHost(new JobHostConfiguration(storageConnictionSttring));
host.RunAndBlock();
Run Code Online (Sandbox Code Playgroud)
消息处理函数如下所示:
public static void ProcessKeepAliveMessages([QueueTrigger("keepalive")] KeepAliveTrigger message)
{
Console.WriteLine("Keep Alive message called on :{0}", message.MessageTime);
}
Run Code Online (Sandbox Code Playgroud)
该作业的消息日志基本上说
[03/05/2015 18:51:02 > 4660f6: SYS INFO] WebJob is stopping due to website shutting down
Run Code Online (Sandbox Code Playgroud)
我不介意这种情况是否会发生,但是当网站开始下一次保持活动时,webjob就不会启动.所有消息都排队,直到我进入管理仪表板或SCM门户,如下所示
https://mysite.scm.azurewebsites.net/api/continuouswebjobs
Run Code Online (Sandbox Code Playgroud)
我可以看到这样的状态:
[{"status":"Starting","detailed_status":"4660f6 - Starting\r\n","log_url":"https://mysite.scm.azurewebsites.net/vfs/data/jobs/continuous/WebJobs/job_log.txt","name":"WebJobs","run_command":"mysite.WebJobs.exe","url":"https://mysite.scm.azurewebsites.net/api/continuouswebjobs/WebJobs","extra_info_url":"https://mysite.scm.azurewebsites.net/azurejobs/#/jobs/continuous/WebJobs","type":"continuous","error":null,"using_sdk":true,"settings":{}}]
Run Code Online (Sandbox Code Playgroud)
如果有人能帮我理解这里出了什么问题,我真的很感激.
我有一个在Azure App Services上运行的网站.它有一个随它部署的WebJob,因此一旦部署就会被放入它的App_data文件夹中.
如果我在部署后FTP到我的站点的wwwroot/app_data文件夹,则app.config文件没有我在Azure门户中的"应用程序设置刀片"中设置的配置设置.我的web.config中的设置已更改为网站.
最奇怪的是,当我运行WebJob时,日志输出表明正在使用正确的设置!
因此,根据我的标题,WebJob是否在部署后使用App.Settings文件,或者是否使用来自azure门户的应用程序设置的某种内存副本,或者它是否使用web.config中的内容.网站?
为了预先提出一个可能的问题,我知道app.settings被重命名为myappname.exe.config
有没有办法让我的Azure WebJob自动部署而无需右键单击并选择"每次发布为Azure WebJob"?即当我签入我的解决方案时,它会自动部署到Azure Portal webjob部分
轻松复制
引入了重大变化 https://github.com/Azure/app-service-announcements/issues/129
所以我安装
Microsoft.Azure.WebJobs.Extensions.Storage
这解决了QueueTriggerAttribute
但是在program.cs中
static void Main()
{
var config = new JobHostConfiguration();
if (config.IsDevelopment)
config.UseDevelopmentSettings();
var host = new JobHost(config);
host.RunAndBlock();
}
Run Code Online (Sandbox Code Playgroud)
我遇到了以下问题:
问题:
提前致谢!
我们有一个 Azure WebJob (3.x) 在 Azure 中的 API 应用程序下运行,全部为 Core 2.1。它可以正常发布并运行,但不显示任何函数或在仪表板上列出函数调用。这很奇怪,因为作业的控制台输出确实显示它检测到一个函数:
[10/17/2018 09:26:19 > fa7c81: SYS INFO] Run script 'run.cmd' with script host - 'WindowsScriptHost'
[10/17/2018 09:26:19 > fa7c81: SYS INFO] Status changed to Running
[10/17/2018 09:26:19 > fa7c81: INFO]
[10/17/2018 09:26:19 > fa7c81: INFO] D:\local\Temp\jobs\continuous\SubmissionJob\43ucb4rv.ipc>dotnet SubmissionJob.dll
[10/17/2018 09:26:21 > fa7c81: INFO] dbug: Microsoft.Extensions.Hosting.Internal.Host[1]
[10/17/2018 09:26:21 > fa7c81: INFO] Hosting starting
[10/17/2018 09:26:21 > fa7c81: INFO] info: Microsoft.Azure.WebJobs.Hosting.JobHostService[0]
[10/17/2018 09:26:21 > fa7c81: INFO] Starting JobHost
[10/17/2018 09:26:21 > fa7c81: INFO] …Run Code Online (Sandbox Code Playgroud)