在 Rabbit 中提取、转换、加载?

Extract, transform, load within Rabbit?

出于性能原因,我经常做的一件事是将 SQL 数据转换为缓存和基于文档的存储。我不希望我的前端应用程序访问我的数据库,所以我有高速缓存解决方案,以及高效的 Solr 和其他解决方案。

我使用 RabbitMQ 作为中央通信枢纽来实现此 ETL 流程,如下所示:后端应用程序向 Rabbit 发送一条消息,其中包含新数据或对现有数据所做的更改。然后我有一个 node.js 脚本,它使用队列,生成小批量数据并填充所有必要的系统:Redis、Mongo、Solr 等

但是,我想知道是否有更好的方法来做到这一点。也许 Rabbit 有某种脚本支持来为队列创建 erlang 逻辑?

However, i'm wondering if there's a better way of doing this. Maybe Rabbit has some kind of scripting support to create erlang logic for queues?

事实并非如此。它只是一个消息队列系统。

我个人觉得你现在的设计听起来不错。

我唯一想知道的是,您的每个目标系统是否都有自己的队列。这样,其中任何一个都可以下降而不影响其他人。

我可能会这样做:

  • 后端产生数据报文通过RMQ发送
  • RMQ 配置了一个扇出交换器,每个目标系统有一个绑定队列
  • 每个系统在自己的队列中接收消息

否则,你的想法对我来说是对的!