我正在创建一个Azure WebJob控制台应用程序,它可以调整上传到blob存储的图像的大小.在线跟踪任何代码示例时,我无法引用和使用BlobInput和BlobOutput输入参数属性.我正在使用NuGet包Microsoft.Azure.Jobs 0.3.0-beta(和Microsoft.Azure.Jobs.Core).
哪个名称空间是BlogInput和BlobOutput?我需要另一个NuGet包吗?
这是我的代码无法编译,因为它无法解析BlobInput和BlobOutput:
using Microsoft.Azure.Jobs;
using System.IO;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
JobHost host = new JobHost();
host.RunAndBlock();
}
public static void SquishNewlyUploadedPNGs([BlobInput("input/{name}")] Stream input, [BlobOutput("output/{name}")] Stream output)
{
//...
}
}
}
Run Code Online (Sandbox Code Playgroud) 任何人都可以解释Azure Web Jobs和Azure Scheduler之间的区别
我有一个使用Azure WebJobs安排的控制台应用程序.尝试读取p12证书的私钥时,执行总是失败.有趣的是,我无法捕获异常,我不得不使用旧Console.WriteLine的调试.
这是我的代码片段:
var certificate = new X509Certificate2(data, "notasecret", X509KeyStorageFlags.Exportable);
ServiceAccountCredential credential = new ServiceAccountCredential(
new ServiceAccountCredential.Initializer(serviceAccountEmail)
{
Scopes = new[] { BigqueryService.Scope.Bigquery }
}.FromCertificate(certificate));
Run Code Online (Sandbox Code Playgroud)
其他帖子提到标志应该X509KeyStorageFlags.MachineKeySet但不幸的是,这会导致Google API出错.它需要设置X509KeyStorageFlags.Exportable标志.
任何人都可以确认X509KeyStorageFlags.Exportable在Azure网站和WebJobs上可用吗?
如果安排Azure WebJob运行但先前运行的实例尚未完成,会发生什么?它会再次运行WebJob,以便两个一次运行吗?它不会运行WebJob并开始计时吗?我无法在任何地方找到这种行为.我有一份工作,我想每小时运行,但有时可能需要一个多小时才能完成,但我从不希望其中两个一次运行.
我在azure上有一个webjob,带有QueueTrigger.工作很长(超过30分钟)
public async static Task ProcessQueueMessageAsync([QueueTrigger(QUEUENAME)] string iJobId)
{
//doing my long job
}
Run Code Online (Sandbox Code Playgroud)
我的问题是如何在触发后删除队列中的消息.消息变为不可见,直到时间跨度(默认为30秒)到来.我的工作时间少得多.所以我想我必须在触发器方法的开头删除该消息.当你使用GetMessage()方法循环而不是触发时,我发现如何做到这一点.但是如何用触发器来做,因为我没有运行的消息对象.DeleteMessage()?
在网上阅读了大量关于Azure WebJobs的信息之后,文档说工作应该是幂等的,另一方面,博客说他们使用WebJobs做"收取客户费用","发送电子邮件"等行为.
该文档说,在具有队列的多个实例上运行连续的WebJob可能会导致多次调用.人们是否真的忽略了他们可以向客户收取两次费用或两次发送电子邮件的事实?
如何确保我可以在扩展的Web应用程序上运行带有队列的WebJob,并且只处理一次消息?
是否可以指定Visual Studio在部署带有计划的Azure Web作业时应使用的作业集合?默认情况下,它会尝试创建一个新的免费层集合,但由于我已经拥有一个(并且每个帐户的限制为一个),因此无法部署.
我想设置一个付费的工作集合,并让我的所有部署都进入该集合.
我正在从Visual Studio的Publish as Azure WebJob...选项中部署WebJob .Visual Studio中的错误消息是:
创建WebJob计划时发生错误:订阅"XXX"不能包含超过"1"的免费作业集合.(/subscriptions/XXX/resourceGroups/CS-WestEurope-scheduler/providers/Microsoft.Scheduler/jobCollections/YYY)
我想保留现有的免费作业集(因为它有其他手动创建的HTTP作业).如果我可以指定自己WebJob计划应该去哪里会好得多.
谢谢!
如何在上次运行结果失败或连续的Web作业未运行时监视azure Web作业?
我发现cloudmonix确实有效.那里还有其他产品吗?
Zapier只能触发不能连续运行的触发式Web作业.
我试图弄清楚是否可以制作一个Azure webjob,并按照每1分钟一次的方式安排它,并让它能够被队列触发.我设法将这两个要求分开,但没有合并到一个工作中.
我知道为了使它们在队列上触发,我需要使用JobHost和一个带有捕获触发器的方法的Functions类.这仍会阻止调度程序,只处理触发器
当我省略JobHost时......那么时间表就完美了.我很确定我会提出一个矛盾,只需要做两个单独的工作,但也许你们中的一个人面对同样的事情并设法实现它.
我有一个部署到Azure的ASP.NET MVC Web App.VS 2013 Pro中的解决方案有3个项目:
Webjob项目通过Add --> New Azure Webjob Project上下文菜单添加到主App项目中,实际上在同一个解决方案中添加了一个新项目,这很好.
当我最初将应用程序发布到Azure时,Webjob也已部署,并且所有工作都按预期工作.Webjob每天运行一次.
现在我对Webjob进行了一些本地更改,并且需要发布这些更改.我按照相同的过程来部署App(rtClick main App --> Publish),它也应该对Webjob进行更改,但是预览窗格没有获取更改,然后更改随后不会发布到Webjob.
顺便说一句,我对Common项目所做的任何更改都会成功获取,所以看起来有一些奇怪的做法是进行更改和发布Webjobs.
有没有人遇到过这个?
azure-webjobs ×10
azure ×8
c# ×3
asp.net ×1
asp.net-mvc ×1
azure-queues ×1
email ×1
idempotent ×1