2016-04-06 45 views
1

是否有可能触发Web任务从发布请求执行?我的情景是,这项工作正在等待数据提供者通过https发布数据,这应该会触发数据处理 - 解析数据,然后应用一些业务操作。 我可以看到很多带有队列的示例,并且很容易测试并自行创建,但不知道如何填充队列,但手动输入某些数据除外。是否有可能以某种方式填充http post数据的队列?由WebPost请求触发的Azure WebJob

回答

0
  • 您可以使用Azure ServiceBus队列。

    Azure Webjobs有一个ServicebusTrigger,您可以在 方案中使用它。

    如果您不能使用客户端库,您可以通过HTTP发送消息到一个队列:

    Service Bus brokered messaging REST tutorial

  • 否则,如果你的消息是太大,您可以将信息存储到Azure存储斑点。 Azure Webjobs有BlobTrigger。但有一些限制:

    WebJobs SDK扫描日志文件以监视新的或更改的斑点。这个过程不是实时的;一个函数可能不会触发,直到blob创建后几分钟或更长时间。另外,基数为storage logs are created on a "best efforts";不保证所有事件都将被捕获。在某些情况下,日志可能会丢失。如果blob触发器的速度和可靠性限制对于您的应用程序不可接受,则建议的方法是在创建blob时创建队列消息,并在处理blob的函数上使用QueueTrigger属性而不是BlobTrigger属性。

+0

我可以看到你的想法是如何工作的。我现在关心的是,从服务总线发送的消息会过大 - 可能大约为2-3 MB xml数据。在我的情况下,最好设置一个简单的Web应用程序,它可以捕获所有的请求并将它们保存在数据库的某个地方。然后,这将在消息队列中创建一条消息,通过webjob处理更改。我甚至认为,为什么不在Web应用程序本身中执行该过程,因为队列可能需要一定的处理。我需要一条消息,在消息到达时立即进行处理,解决方案可扩展。 –

+0

webjob将收到的消息将只是接收到新项目,然后将从DB读取xml数据。这不是太复杂的想法吗?这将很容易扩展我可以增加作业的数量,不确定实际接收数据的Web应用程序 - 我想可以使用负载平衡器来完成。我可能会做的最初是最简单的解决方案。 –

+1

因此您可以使用blob存储。有一个webjob blobtrigger。 https://azure.microsoft.com/en-us/documentation/articles/websites-dotnet-webjobs-sdk-storage-blobs-how-to/。我明天将编辑我的文章。 – Thomas