Kafka 生产者将消息发布到辅助集群

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

建议集群设置的描述

  • 2 个数据中心,每个数据中心有 5 个节点 Kafka 集群
  • 集群具有相同的主题和相同的生产者/消费者实例使用它
  • 集群之间没有数据复制。所以集群 1 和集群 2 中的数据是不同的
  • 不需要消息关联性。 [如果生产者 1 开始向集群 2 发布消息,则功能上不会产生任何差异,反之亦然]

我们想要实现的是,假设生产者 1 向集群 1 异步发布一条消息,但收到否定确认(在所有重试超时发生之后)。这在生产者回调方法中很容易检测到

收到此故障后,我们使用另一个 KafkaTemplate(具有集群 2 的详细信息)供生产者使用。现在生产者尝试将相同的消息发布到集群 2 [它也适用于其他方式,如果生产者 2 无法在本地发布,它将向集群 1 发送消息]

我们在这里获得的优势是

  • 消息不会丢失并自动发布到其他集群
  • 由于此活动针对每条消息都会发生,因此一旦集群 1 备份,生产者 1 就能够自动向集群 1 发送消息

我们看到的一个缺点是,我们通过在元数据获取超时或否定确认的异常处理块中生成辅助集群来自行处理故障转移逻辑

我在网上找不到任何显示类似设置的地方。这种方法有什么根本性的错误吗

apache-kafka spring-kafka kafka-producer-api failover
2个回答
1
投票

当然;只需配置 2 套基础设施 bean - 生产者和消费者工厂、容器工厂、模板。

您不能使用 Boot 的自动配置,但您可以自己定义 bean。


-1
投票

您可以分享一下演示代码实现吗?我也在做类似的事情。

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