我有一个服务,可以发送到' /'。此服务将消息推送到RABBITMQ队列,该队列处理消息。我想在完成时返回指示,然后调用另一个执行另一个处理的函数。 场景:
(http) - > server1-> RABBITMQ QUEUE-> RABBITMQ消费者 - >返回服务器1 - >呼叫功能A
服务器是NODE JS
谢谢:)
答案 0 :(得分:0)
承诺链可能对您的情况有用。它将逐个执行所有异步步骤,如果其中任何一个失败,将捕获错误。
const doSomethingStepByStep = () => {
return Promise.resolve()
.then(() => {
// call server, or whatever - here just an example that promise is resolved
return Promise.resolve()
})
.then(() => {
// etc, call another server
})
.catch(ex => {
// something went wrong in either in the steps above
})
}
// use it
doSomethingStepByStep()
.then((res) => {
// do something with the result
})
答案 1 :(得分:0)
查看"流程管理器"消息模式http://www.enterpriseintegrationpatterns.com/patterns/messaging/ProcessManager.html
以及" saga" (https://docs.particular.net/nservicebus/sagas/和https://lostechies.com/jimmybogard/2013/05/14/saga-patterns-wrap-up/)或"工作流程管理员"模式,基本上是相同的,但名称不同。
它的要点是,你有一个核心代码,可以理解整个流程的流程。它处理在正确的时间发出正确的消息,接收响应,处理该响应以找出接下来发生的事情,并进行下一次调用,以便该过程的下一步发生。
我有一篇博文,介绍了这个核心思想,从Node中的简单JS对象转移到带有这些概念的RabbitMQ https://derickbailey.com/2015/08/10/managing-workflow-in-long-running-javascript-processes/