RabbitMq和nodeJs的集成 当队列中到达2条相互关联的消息时,对订阅者进行调用的功能。

问题描述 投票:2回答:1

我有2个微服务,正在处理一些输入的数据。(provided through queue ABC) 在完成它们的处理后,它们会将2条消息推送到另一个队列中。(queue ASD) 的工作已经完成。

一个用户正在监听队列中的内容。ASD . 在上述2个任务完成的基础上,我想在前面两个微服务都完成处理并向队列推送2个相关消息时,在订阅者上运行一个函数。

我使用的是 RabbitMq 作为队列和 nodejs 作为客户。

请提出建议。

node.js rabbitmq queue
1个回答
0
投票

如果我正确理解你的问题,你想做的是流处理。不幸的是,RabbbitMQ(基于AMQP)是一个纯粹的消息传递工具,并没有提供这个功能。Kafka可以让你做流处理,开箱即用。你也可以参考 这个 以获得更多关于我所说的细节。

不过有几个不太有效的方法可以解决这个问题.你可以直接从Queue'ASD'中读取所有的消息,并将它们存储在db中,让另一个serviceAPI定期从这个db中读取它们。让另一个serviceAPI周期性地从这个db中读取它们(或者在写入db的时候,这个消费者可以检查这是否是第二条消息,并相应地调用API)。最后的服务可以根据记录的一些属性来连接关联它们,一旦这两条记录都可用,就可以做它的工作。

理想情况下,如果还来得及或者可以,我建议使用kafka而不是RabbitMQ来处理这个用例。

© www.soinside.com 2019 - 2024. All rights reserved.