Kafka 连接与多个消息队列的集成

Posted

技术标签:

【中文标题】Kafka 连接与多个消息队列的集成【英文标题】:Kafka connect integration with multiple Message Queues 【发布时间】:2019-11-28 10:51:51 【问题描述】:

我正在设计一个必须与多个基于消息队列 (MQ) 的后端集成的系统。我为每个后端提供一个微服务,用于处理 MQ 有效负载。我选择了 Kafka 作为消息传递媒介,并考虑将 Kafka-MQ-Connects 用于 MQ 集成。

我可以想到两种集成方法。

    Kafka-MQ-Connect(源/接收器)连接每个后端 + Kafka 主题(到/从)每个后端。

优点。 - 无需触及现有连接器即可扩展到新后端。

缺点。 - 需要维护的连接器和主题太多。

    单个 Kafka-MQ-Connect(源/接收器)+单个 Kafka 主题(到/从)用于所有后端。此外,Sink 连接对 MQ 进行动态路由,并且微服务将具有内置的消息过滤器以仅过滤相关消息。

优点。 - 需要维护的主题和连接器很少。

缺点。 - 添加新的 MQ 后端需要更改连接器。

更好的方法是什么?除了上述之外,还有其他集成方案吗?

【问题讨论】:

【参考方案1】:

虽然您没有提供任何进一步的要求(例如,您计划添加新数据源的频率以及您拥有的流量),但我会选择第一种方法。将来添加/删除新的/现有的数据源会容易得多。

我不会说很难维护多个接收器/源连接器和主题。根据我的经验,维护从多个主题/源复制数据的连接器更加困难。例如,如果您想在特定主题上应用 SMT(简单消息转换),如果您没有独立的连接器,您将无法实现它,因为 SMT 应用在连接器级别。此外,如果您为所有源配置单个连接器并且在某些时候失败,则所有目标系统都将遇到停机时间。

【讨论】:

以上是关于Kafka 连接与多个消息队列的集成的主要内容,如果未能解决你的问题,请参考以下文章

消息队列kafka

消息队列之kafka(基础介绍)

消息队列之 Kafka

分布式消息队列之kafka

Kafka 与 RabbitMQ 如何选择使用哪个?

kafka面试题