我理解Webjob是一个后端工作,Webapp可以通过Azure队列调用它。 我的问题是,如果Webjob完成,Webapp如何知道Webjob已经完成,Webapp如何检索Webjob生成的结果?
是否有任何asyn方法可以在这种情况下工作? 其他方法也受到欢迎。
由于
德里克
----------------更新------------------------
可以" ListQueuesSegmentedAsync"方法工作?但我不知道如何使用它。
答案 0 :(得分:1)
你已经知道了答案!消息队列!
如果您需要超过几KB的消息(可能要传递JPEG文件),请将其放入Blob存储中,并使用指示新到达blob的完整路径的队列消息向Web App / WebJob发送信号。
有关实施以队列为中心的工作流程的更多信息,请参阅此处的其他答案:
https://stackoverflow.com/a/38036911/4148708
有时,如果保持状态不是您首先关注的问题,那么实现WebJob在WebApp中调用经过身份验证的REST端点到GET / POST数据的系统可能会更容易。
没有银弹。每种情况都会有所不同,可能会受益于简单性而非持久性(REST与持久性消息队列)。
哦,既然你特意要求异步,这里有一种方法可以用于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>和破坏性。但我离题了。