如何编写 Kafka 使用者 - 单线程与多线程
我写了一个单一的Kafka消费者(使用Spring Kafka),它从一个主题阅读,并且是消费者群体的一部分。使用消息后,它将执行所有下游操作并转到下一个消息偏移。我已将其打包为 WAR 文件,我的部署管道将其推送到单个实例。使用我的部署管道,我可能会将此项目部署到部署池中的多个实例。
但是,当我希望多个消费者作为我的基础设施的一部分时,我无法理解以下内容 -
我实际上可以在部署池中定义多个实例,并在所有这些实例上运行此 WAR。这意味着,他们都在听同一个话题,是同一个消费者群体的一部分,实际上会划分他们之间的分区。下游逻辑将按原样工作。这对于我的用例来说完全可以正常工作,但是,我不确定,这是否是最佳方法?
在线阅读时,我在这里和这里遇到了资源,人们正在定义单个消费者线程,但在内部,创建多个工作线程。还有一些示例,我们可以定义多个执行下游逻辑的使用者线程。考虑这些方法并将其映射到部署环境,我们可以获得相同的结果(就像我上面的理论解决方案一样),但机器数量较少。
就个人而言,我认为我的解决方案很简单,可扩展,但可能不是最佳的,而第二种方法可能是最佳的,但想知道您的经验,建议或我应该考虑的任何其他指标/约束?此外,我正在思考我的理论解决方案,我实际上可以使用简单的机器作为Kafka消费者。
虽然我知道,我没有发布任何代码,但如果我需要将此问题移动到另一个论坛,请告诉我。如果您需要特定的代码示例,我也可以提供它们,但是在我的问题上下文中,我不认为它们很重要。