当我们将更多node.js代码移植到Azure Functions时,我们在Azure文档中看到使用存储队列的引用是委派处理责任的首选方式,而不是使用http请求来调用其他函数。
我们应该为此委派使用的请求/响应设计模式是什么?具体来说,如何将通过队列发回的响应仅传递给发出请求的函数?
以下是我们想要做的一个例子:
我们怎样才能让功能A只接收它正在等待的请求?
getMessage方法似乎无法有选择地侦听队列,只能抓取最顶层的消息:
getMessage(queue [, options], callback)
另一个角度是,如果我们想要多个Worker函数来侦听Queue X.函数C将处理所有具有requestType:“query”的请求,而Function D将处理所有requestType:“blob”。没有这个过滤,我们将为每个Worker函数使用一个队列。这也是正确的方法吗?
注意:我们正在使用node.js,但我假设Queue API在所有SDK中都是等效的。
答案 0 :(得分:0)
Azure队列实际上不执行请求 - 响应。 Http处理不应该等待队列。 Http消息应该快速返回(同步,<1分钟),而队列用于更长的异步后台处理。如果Http在队列上等待,它应该使用202长时间运行的模式。
考虑:
答案 1 :(得分:0)
看起来Azure Logic Apps是在请求/响应模式中编排多个功能的未来。使用逻辑应用程序,您可以设置HTTP触发器(以及其他许多应用程序),然后设置几个函数以使用条件逻辑顺序运行:
https://docs.microsoft.com/en-us/azure/logic-apps/logic-apps-azure-functions