REST / RPC API asyn调用微服务

时间:2017-03-23 16:23:21

标签: node.js django python-2.7 rabbitmq tornado

我正在为用户请求开发许多微服务。任何库都会调用许多其他服务,如计费,推荐 然后做检查和回复。

例如:

打电话给api

get(request):

  // call two services async
  billing = billingService(user_id)  //service end point 1
  recommendation = recommendation_service(user_id)  //service end point 2

  // we will have results from those two services

  //check conditions response to user  
  if billing == OK:
       response (recommendation)  // response

2 个答案:

答案 0 :(得分:1)

您可以使用承诺来解决上述问题。

billing = billingService(user_id).then(results => {
//Here in the results variable the output of billing service method will be stored if billing service method returns a promise.
recommendation = recommendation_service(user_id)})

Promise是在javascript中解决异步调用的最有效方法。

如果您特别搜索任何库,可以使用node.js的“q”库

答案 1 :(得分:0)

您可以尝试使用ES7的async / await。它写起来会更容易,而且你的代码看起来也会更清晰。

一旦你开始工作,你的代码就会像:

const billing = await billingService(user_id)
const recommendation = await recommendation_service(user_id)

我建议学习Promises(毕竟他们已成功地将人们从回调地狱中拯救出来)以取消asynctify async / await(因为你的billingService和recommendation_service最终需要异步函数才能等待)

希望这有帮助!