当前位置: 首页 > 知识库问答 >
问题:

如何从Kafka的两个不同集群消费?

顾烨磊
2023-03-14

我有两个Kafka集群说A和B,B是A的复制品。仅当 A 关闭且相反,我才希望使用来自集群 B 的消息。然而,使用来自两个集群的消息会导致重复的消息。那么,有什么办法可以将我的 kafka 使用者配置为仅从一个集群接收消息。

谢谢-

共有1个答案

苏星宇
2023-03-14

那么,有没有什么方法可以配置我的kafka消费程序只接收来自一个集群的消息。

是的:Kafka消费者实例将始终只接收来自一个Kafka集群的消息。也就是说,没有内置选项可以使用相同的使用者实例从2个集群读取数据。但我认为你正在寻找不同的东西,见下文。

我希望仅在A关闭时使用来自集群B的消息,反之亦然。然而,使用来自两个集群的消息会导致重复的消息。

Kafka的消费者API中没有内置的故障转移支持,如“如果集群A失败,切换到集群B”。如果您需要这样的行为(如您的情况),您需要在使用Kafka消费者API的应用程序中这样做。

例如,您可以创建一个使用者实例以从集群 A 读取数据,监控该实例和/或该集群以确定是否需要故障转移到集群 B,以及(如果需要)通过创建另一个消费实例来执行到 B 的故障转移,以便在 A 发生故障时从 B 中读取数据。

然而,有一些问题使这种故障转移行为比我的简化示例更复杂。一个困难是知道在切换到B时已经读取了来自集群A的哪些消息:这很棘手,因为通常,集群之间的消息偏移量不同,因此确定消息(在B中)的“副本”是否已经读取(从A中)并不容易。

注意:有时您可以在例如消息处理是幂等的情况下(即重复消息/重复消息处理不会改变处理结果)简化这样的应用程序/这样的故障转移逻辑

 类似资料:
  • 有没有任何选项或配置可以方便单个Kafka消费者同时消费来自两个不同集群的消息?在创建生产者和消费者时,我将两个集群都提到逗号分隔。我一直在观察消费者只消费来自单个集群的消息。 请参阅下面的说明:消费者C1被配置为监听集群:集群-1:Zooker-1 with Broker-1集群-2:Zooker-2 with Broker-2 我正在寻找一种解决方案,其中消费者C1可以同时消费来自集群1和集群

  • 在我们的一个基于spring boot的服务中,我们打算同时连接到两个不同的kafka集群。这些集群都有自己的引导服务器集、主题配置等。它们之间没有任何关联,就像这个问题中的情况一样。 我将有不同类型的消息从不同主题名称的每个集群中读取。可能有或可能没有多个生产者通过此服务连接到两个集群,但我们肯定每个集群至少有一个消费者。 我想知道如何在application.yml中定义属性以满足此设置,以便

  • 我有 2 个Kafka集群。群集 A 和群集 B。这些集群是完全独立的。我有一个Spring启动应用程序,它侦听集群 A 上的主题,转换事件,然后将其生成到集群 B 上。我只需要一次,因为这些是金融事件。我注意到,对于我当前的应用程序,我有时会遇到重复的情况,也会错过一些事件。我试图尽我所能只实现一次。其中一篇帖子说,与Spring启动相比,flink将是一个更好的选择。我应该搬到闪光灯吗?请参阅

  • 我以前认为设置我的消费者将始终收到他们尚未收到的消息,但最近我发现情况并非如此。这只在使用者尚未提交抵消时才起作用。在任何其他情况下,使用者将继续接收偏移大于其提交的最后偏移的消息。 由于我总是使用随机的组ID创建新的使用者,我意识到我的使用者“没有内存”,他们是新的使用者,并且他们永远不会提交偏移,因此策略将始终适用。我的疑虑就从这里开始了。假设以下场景: 我有两个客户端应用程序,A和B,每个客

  • 我有Spring启动应用程序,它是接收静态数据,基于一些业务逻辑,我需要将数据转移到两个不同的kafka集群,它们有自己的kerberos密钥提及的jaas文件。 我已经编写了两个不同的生产者实例,在它们的不同对象实例中具有以下属性。 第二制片人 当我将其作为两个服务启动并仅启用生产者实例时,它可以工作,但当我在单个jar中启用两个实例时,只有一个生产者可以工作,其他生产者会遇到身份验证问题。 我

  • 我有以下问题: 我在aws上只使用1个worker和broker节点建立了一个尽可能基本的汇合平台。 我对所有与人脉和关系网有关的事情都很敏感,所以我希望有人能帮助我