Azure Webjob如何将结果返回给webapp?

时间:2016-09-22 18:43:51

标签: azure azure-webjobs azure-webjobssdk azure-storage-queues

我理解Webjob是一个后端工作,Webapp可以通过Azure队列调用它。 我的问题是,如果Webjob完成,Webapp如何知道Webjob已经完成,Webapp如何检索Webjob生成的结果?

是否有任何asyn方法可以在这种情况下工作? 其他方法也受到欢迎。

由于

德里克

----------------更新------------------------

可以" ListQueuesSegmentedAsync"方法工作?但我不知道如何使用它。

1 个答案:

答案 0 :(得分:1)

你已经知道了答案!消息队列!

如果您需要超过几KB的消息(可能要传递JPEG文件),请将其放入Blob存储中,并使用指示新到达blob的完整路径的队列消息向Web App / WebJob发送信号。

有关实施以队列为中心的工作流程的更多信息,请参阅此处的其他答案:
https://stackoverflow.com/a/38036911/4148708

有时,如果保持状态不是您首先关注的问题,那么实现WebJob在WebApp中调用经过身份验证的REST端点到GET / POST数据的系统可能会更容易。

没有银弹。每种情况都会有所不同,可能会受益于简单性而非持久性(REST与持久性消​​息队列)。

哦,既然你特意要求异步,这里有一种方法可以用于REST(队列本质上是异步的):

  • 从WebJob
  • 调用REST端点
  • 返回202 Accepted(如我找到你,但TPS报告还没有准备好
  • 返回Location: https://webapp/{a-chunk-of-sha1-representing-a-unique-id} (此标题的要点是告诉WebJob 不时检查此URL以获取完成的TPS报告
  • 按照网址获取结果,200 OK表示您拥有结果,417 Expectation Failed表示尚未拥有结果。实际上HTTP 417被用来回应100 Continue,但你永远不会使用它,所以我放慢了417 Expectation Failed的竞选活动,以便与 elastic 等流行语竞争em>和破坏性。但我离题了。