gpt4 book ai didi

java - 如何编写 Kafka 消费者——单线程 vs 多线程

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:52:36 25 4
gpt4 key购买 nike

我已经编写了一个 Kafka 消费者(使用 Spring Kafka),它从一个主题中读取并且是消费者组的一部分。一旦消息被消费,它将执行所有下游操作并移动到下一个消息偏移量。我已将其打包为 WAR 文件,我的部署管道将其推送到单个实例。使用我的部署管道,我可能会将此工件部署到我的部署池中的多个实例。

但是,当我想要多个消费者作为我的基础设施的一部分时,我无法理解以下内容 -

  • 我实际上可以在我的部署池中定义多个实例,并且让这个 WAR 在所有这些实例上运行。这意味着,所有他们正在听同一个话题,是同一个消费者的一部分分组,实际上会在它们之间划分分区。这下游逻辑将按原样工作。这对我来说非常好用例,但是,我不确定这是否是最佳方法跟随?

  • 网上阅读,偶遇资源herehere ,人们正在定义一个单一的消费者线程,但在内部,创建多个工作线程。还有一些例子,我们可以定义执行下游逻辑的多个消费者线程。考虑这些方法并将它们映射到部署环境,我们可以获得相同的结果(正如我的理论上面的解决方案可以),但机器数量较少。

就我个人而言,我认为我的解决方案简单、可扩展但可能不是最佳的,而第二种方法可能是最佳的,但想知道您的经验、建议或我应该考虑的任何其他指标/限制?此外,我在考虑我的理论解决方案,我实际上可以使用最简单的机器作为 Kafka 消费者。

虽然我知道,但我没有发布任何代码,如果我需要将这个问题移到另一个论坛,请告诉我。如果您需要具体的代码示例,我也可以提供它们,但我认为它们在我的问题上下文中并不重要。

最佳答案

您现有的解决方案是最好的。移交给另一个线程会导致偏移量管理出现问题。 Spring kafka 允许您在每个实例中运行多个线程,只要您有足够的分区即可。

关于java - 如何编写 Kafka 消费者——单线程 vs 多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50051768/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com