Apache kafka 卡夫卡:我们可以让消费者订阅同一个主题,但主题内部有不同的管道吗?

Apache kafka 卡夫卡:我们可以让消费者订阅同一个主题,但主题内部有不同的管道吗?,apache-kafka,kafka-consumer-api,Apache Kafka,Kafka Consumer Api,我有200个卡夫卡消费者可以做这两件事, 1.他们可以订阅200个不同的主题,并将使用敏感的消息。 2.所有200名消费者都可以订阅一个主题 问题: 1.创建200个或大量主题是一个好的设计吗? 2.在第二个场景中,我们将如何实现只基于某个参数将发布到主题的消息发送给特定消费者的实现 创建200个或大量主题是一个好的设计吗 Kafka使用复制文件作为主题,并且由于它使用基于偏移量的消息传输,所以主题的数量对性能没有直接影响,所以这不是一个问题 在第二个场景中,我们将如何实现将发布到主题的消息发送

我有200个卡夫卡消费者可以做这两件事, 1.他们可以订阅200个不同的主题,并将使用敏感的消息。 2.所有200名消费者都可以订阅一个主题

问题: 1.创建200个或大量主题是一个好的设计吗? 2.在第二个场景中,我们将如何实现只基于某个参数将发布到主题的消息发送给特定消费者的实现

  • 创建200个或大量主题是一个好的设计吗
  • Kafka使用复制文件作为主题,并且由于它使用基于偏移量的消息传输,所以主题的数量对性能没有直接影响,所以这不是一个问题

  • 在第二个场景中,我们将如何实现将发布到主题的消息发送到特定主题的实现 消费者仅基于某些参数
  • 您不能基于参数执行此操作,如果您需要将消息传递给一个消费者,则需要将所有消费者分组到一个消费者组中,并使整个组收听一个主题。这样,消息将仅由该消费者组中的一个消费者使用

    如果您需要按顺序(有序)使用消息,那么您需要创建只有1个分区的Kafka主题

  • 创建200个或大量主题是一个好的设计吗
  • Kafka使用复制文件作为主题,并且由于它使用基于偏移量的消息传输,所以主题的数量对性能没有直接影响,所以这不是一个问题

  • 在第二个场景中,我们将如何实现将发布到主题的消息发送到特定主题的实现 消费者仅基于某些参数
  • 您不能基于参数执行此操作,如果您需要将消息传递给一个消费者,则需要将所有消费者分组到一个消费者组中,并使整个组收听一个主题。这样,消息将仅由该消费者组中的一个消费者使用


    如果您需要顺序(有序)消息消费,那么您需要创建一个只有1个分区的Kafka主题。

    我们过去所做的是使用一个包含大量分区的主题,生产者被迫使用一些专用分区,消费者则从这些专用分区消费。因此避免了许多主题,尽管后来出现了一些扩展挑战,但我们只是想一想,我们过去的做法是使用一个包含大量分区的主题,生产者被迫使用一些专用分区,消费者从这些专用分区中消费。因此避免了很多话题,尽管后面还有一些扩展方面的挑战,但还是给出了一个thoughtHi@shazin,感谢1的澄清。现在最远2。我的要求是,如果生产者为consumer1生成数据,那么只有consumer1能够使用该数据,所有其他消费者也是如此。我想在制作时针对单个消费者,是否可能有一个主题?您希望基于消息元素向特定消费者发送某种路由。在卡夫卡,这是不可能的。Kafka提供了哑队列智能客户端方法,而不是ESBs智能队列哑客户端方法。如果您希望一个使用者使用来自卡夫卡主题的所有消息,那么每个主题只能有一个使用者。我们可以使用自定义分区器实现这一点吗?将主题中的特定分区分配给特定的使用者?这个方法值得一试吗?嗨@shazin,谢谢你对1的澄清。现在最远2。我的要求是,如果生产者为consumer1生成数据,那么只有consumer1能够使用该数据,所有其他消费者也是如此。我想在制作时针对单个消费者,是否可能有一个主题?您希望基于消息元素向特定消费者发送某种路由。在卡夫卡,这是不可能的。Kafka提供了哑队列智能客户端方法,而不是ESBs智能队列哑客户端方法。如果您希望一个使用者使用来自卡夫卡主题的所有消息,那么每个主题只能有一个使用者。我们可以使用自定义分区器实现这一点吗?将主题中的特定分区分配给特定的使用者?这种方法值得一试吗?