gpt4 book ai didi

multithreading - 使用来自多个 kafka 主题的消息的最佳实践是什么?

转载 作者:行者123 更新时间:2023-12-04 06:48:45 25 4
gpt4 key购买 nike

我需要消费来自不同 kafka 主题的消息,

  • 我是否应该为每个主题创建不同的消费者实例,然后根据分区数启动一个新的处理线程。
  • 我应该从单个消费者实例订阅所有主题,并且应该启动不同的处理线程

  • 感谢和问候,
    梅加

    最佳答案

    唯一的规则是您必须考虑 Kafka 所做的和不保证的:

  • Kafka 只保证单个主题/分区的消息顺序。编辑:这也意味着如果您的单个主题消费者出于某种原因切换分区,您可能会无序获取消息。
  • 当您使用单个消费者订阅多个主题时,将为每个请求的主题为该消费者分配一个主题/分区对。
  • 这意味着任何一个主题的传入消息的顺序都是正确的,但您不能保证主题之间的顺序是按时间顺序排列的。
  • 您也不能保证在任何给定的时间段内都会收到来自任何特定订阅主题的消息。

  • 我最近遇到了一个错误,因为我的应用程序使用一个消费者订阅了许多主题。每个主题都是一个实时图像源,每条消息一个图像。由于所有主题总是有新图像,因此每个 poll() 仅返回要注册的第一个主题的图像。

    如果处理所有消息很重要,则您需要确保每个 Consumer 可以比创建消息更快地处理来自其所有订阅主题的消息。如果不能,您要么需要更多消费者在同一组中提交读取,要么您必须接受某些消息可能永远不会被处理的事实。

    显然,一个消费者/主题是最简单的,但它确实增加了一些额外的消费者的开销。您必须根据您的需要确定这是否重要。

    正确回答您的问题的唯一方法是评估您的应用程序的特定要求和功能,并构建在这些要求和 Kafka 的限制范围内工作的东西。

    关于multithreading - 使用来自多个 kafka 主题的消息的最佳实践是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46628946/

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