Apache kafka 卡夫卡制作人向辅助群集发布消息

Apache kafka 卡夫卡制作人向辅助群集发布消息,apache-kafka,spring-kafka,kafka-producer-api,failover,Apache Kafka,Spring Kafka,Kafka Producer Api,Failover,建议的群集设置说明 2个数据中心,每个中心有5个节点的卡夫卡集群 集群具有相同的主题和相同的生产者/消费者实例 没有跨集群的数据复制。因此,集群1和集群2中的数据是不同的 不需要消息关联。[如果生产者1开始向集群2发布消息,则在功能上不会有任何区别,反之亦然] 我们想要实现的是,假设生产者1异步地向集群1发布消息,但接收到否定的确认(在所有重试超时发生之后)。这在生产者回调方法中很容易检测到 收到此故障后,我们使用另一个KafkaTemplate(具有集群2的详细信息)供生产者使用。现在,p

建议的群集设置说明

  • 2个数据中心,每个中心有5个节点的卡夫卡集群
  • 集群具有相同的主题和相同的生产者/消费者实例
  • 没有跨集群的数据复制。因此,集群1和集群2中的数据是不同的
  • 不需要消息关联。[如果生产者1开始向集群2发布消息,则在功能上不会有任何区别,反之亦然]
我们想要实现的是,假设生产者1异步地向集群1发布消息,但接收到否定的确认(在所有重试超时发生之后)。这在生产者回调方法中很容易检测到

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

我们在这里的优势是

  • 消息不会丢失并自动发布到其他群集
  • 由于每个消息都会发生此活动,因此一旦群集1备份,Producer 1就会自动向群集1发送消息
我们看到的一个不利方面是,我们自己处理故障切换逻辑,通过在元数据获取超时或否定确认的异常处理块中向辅助集群生成数据

我在网上找不到任何显示类似设置的地方。这种方法是否存在根本性的问题


当然可以;只需配置2组基础结构bean—生产者和消费者工厂、容器工厂、模板


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

谢谢Gary,我只是想确认一下这个设置:)。我们也做了一些负载测试,效果很好