用于数据聚合的 RabbitMq 和 KStreams

RabbitMq and KStreams for Data Aggregation

我试图在索引到 Elasticsearch 之前解决数据反规范化问题。现在,我的 Postgres 11 数据库配置了 pgoutput 插件,带有 Postgresql 连接器的 Debezium 正在将日志更改流式传输到 RabbitMq,然后通过对数据库进行反向查找并将其汇总到 Elasticsearch。

虽然这工作正常,但在应用层查找以聚合数据非常昂贵并且需要大量执行时间(查询已经优化但它有大约 10 个连接使其变得草率)。

我探索的另一种选择是使用 KStreams 进行数据聚合。我对 Apache Kafka 的了解很少,因此我来了。我的问题是,必须让 Apache Kafka 作为代理才能使用 Java KStreams API,或者它可以与 RabbitMq 等任何代理一起使用吗?我对此不确定,因为所有文章都讨论了特定于 Apache Kafka 的 Kafka 主题和键值对。

如果有更好的方法解决数据反规范化问题,我也愿意接受。

谢谢

Kafka Steams 仅适用于 Kafka。非常欢迎您在 Debezium 和使用任何主题的进程(写入 RabbitMQ 的 Postgres 连接器?)之间使用 Kafka Streams

您可以使用 Spark、Flink 或 Beam 对其他消息队列进行流处理,但 Debezium 需要 Kafka,因此请从相关工具着手。

例如,Spark 有一个 Elasticsearch 编写器库;其他的不清楚。