我有2个微服务,正在处理一些输入的数据。(provided through queue ABC)
在完成它们的处理后,它们会将2条消息推送到另一个队列中。(queue ASD)
的工作已经完成。
一个用户正在监听队列中的内容。ASD
. 在上述2个任务完成的基础上,我想在前面两个微服务都完成处理并向队列推送2个相关消息时,在订阅者上运行一个函数。
我使用的是 RabbitMq
作为队列和 nodejs
作为客户。
请提出建议。
如果我正确理解你的问题,你想做的是流处理。不幸的是,RabbbitMQ(基于AMQP)是一个纯粹的消息传递工具,并没有提供这个功能。Kafka可以让你做流处理,开箱即用。你也可以参考 这个 以获得更多关于我所说的细节。
不过有几个不太有效的方法可以解决这个问题.你可以直接从Queue'ASD'中读取所有的消息,并将它们存储在db中,让另一个serviceAPI定期从这个db中读取它们。让另一个serviceAPI周期性地从这个db中读取它们(或者在写入db的时候,这个消费者可以检查这是否是第二条消息,并相应地调用API)。最后的服务可以根据记录的一些属性来连接关联它们,一旦这两条记录都可用,就可以做它的工作。
理想情况下,如果还来得及或者可以,我建议使用kafka而不是RabbitMQ来处理这个用例。