Akka 卡夫卡与阿克卡集群

Akka 卡夫卡与阿克卡集群,akka,apache-kafka,akka-cluster,Akka,Apache Kafka,Akka Cluster,下面是我的用例 许多应用程序将卡夫卡中的消息排在不同主题下 让每个主题的使用者将工作分发给集群中的工作人员。工作可分为长时间运行、内存密集型、简单型等,并相应地选择工作人员 这让我探索Akka集群的工作分配、路由和扩展。我可以使用Akka“主管”作为卡夫卡消费者,并根据其分类将传入的工作分配给相应的工人 但我仍在努力理解的是,在Akka集群的主管和员工之间实施弹性沟通的正确方式。因为一旦主管使用了来自卡夫卡的消息,卡夫卡偏移量就会提交。如果在偏移量提交后处理过程中发生错误,以下方法是否可以接受,

下面是我的用例

  • 许多应用程序将卡夫卡中的消息排在不同主题下
  • 让每个主题的使用者将工作分发给集群中的工作人员。工作可分为长时间运行、内存密集型、简单型等,并相应地选择工作人员
  • 这让我探索Akka集群的工作分配、路由和扩展。我可以使用Akka“主管”作为卡夫卡消费者,并根据其分类将传入的工作分配给相应的工人

    但我仍在努力理解的是,在Akka集群的主管和员工之间实施弹性沟通的正确方式。因为一旦主管使用了来自卡夫卡的消息,卡夫卡偏移量就会提交。如果在偏移量提交后处理过程中发生错误,以下方法是否可以接受,以从上次保留的位置恢复和开始


    通过使用卡夫卡支持的持久邮箱,使主管成为持久参与者。主管在卡夫卡排队工作,工人从卡夫卡获得工作,并在完成工作后提交其补偿。

    正如Jaakko所说,这实际上取决于您使用的第三方库

    就我而言,我已经成功地使用了,尽管我启用了偏移自动提交

    但是,此库可以满足您的需要,因为它允许您自定义偏移提交(请参阅第节和第节)

    文件说:

    Consumer.committeablesource使向Kafka提交偏移位置成为可能。与自动提交相比,它可以精确地控制消息何时被认为已使用

    为了禁用自动提交,您必须通过添加
    Akka.kafka.consumer
    部分来完成Akka
    application.conf
    文件:

    akka.kafka.consumer {
    
      # Properties defined by org.apache.kafka.clients.consumer.ConsumerConfig
      # can be defined in this configuration section.
    
      kafka-clients {
        # Disable auto-commit by default
        enable.auto.commit = false
      }
    
    }
    
    最新版本的akka-stream-kafka_2.11(版本
    0.16
    )与akka
    2.5.x
    兼容,但您必须使用akka工具包中的一个覆盖akka-stream_2.11的依赖关系。目前,我在Akka
    2.5.3
    中使用这个库,它运行得非常好


    希望你能找到你想要的:)

    嗨,你用什么图书馆来消费卡夫卡?您使用的库可能具有在使用后不自动提交消息的功能。