当前位置: 首页 > 知识库问答 >
问题:

kafka多个生产者到特定的同一个分区

封锐藻
2023-03-14

使用Spring kafka模板,我有2个不同的生产者,他们使用相同的键向主题发送不同的消息,始终以相同的形式:

生产者1:发送密钥:1消息:abc分区0

生产者2:发送密钥:2消息:def

我有3个分区,所有消息都根据消息键发送到同一个分区。

现在,我需要确保,根据某些属性,特定消息将发送到特定分区,以便能够管理系统中的某些优先级。

问题是生产者2无法知道生产者1选择了哪个分区。

Kafka确保来自使用相同密钥发送到的不同生产者的消息将发送到同一分区。但是,当从生产者1分配分区时,生产者2将具有相同密钥的消息发送到不同的分区。

我已经看到了有关这方面的信息,但生产者没有选择要使用的分区。

即使生产者选择了它将使用的分区,kafka不应该继续为消息分配相同的分区吗?

共有1个答案

吴均
2023-03-14

这篇文章的答案可能会帮助你理解你所面临的问题。分区0的偏移量实质上非常接近于与其余分区的偏移量之和

/***默认分区策略:**

 类似资料:
  • 我有一个生产者/消费者场景,我不希望一个生产者交付产品,多个消费者消费这些产品。然而,常见的情况是,交付的产品只被一个消费者消费,而其他消费者从未看到过这个特定的产品。我不想实现的是,一个产品被每个消费者消费一次,而没有任何形式的阻碍。 我的第一个想法是使用多个BlockingQueue,每个消费者使用一个,并使生产者将每个产品按顺序放入所有可用的BlockingQueues中。但是,如果其中一个

  • 我有三根线。线程1(T1)是生成器,它生成数据。线程2和线程3(T2和T3)分别等待T1的数据在单独的循环中处理。我正在考虑在线程之间共享BlockingQueue,并通过调用“Take”让T2和T3等待。

  • 我有一个将消息写入主题/分区的生产者。为了保持顺序,我希望使用单个分区,我希望12个使用者读取来自这个分区的所有消息(没有使用者组,所有消息都应该发送给所有使用者)。这是可以实现的吗?我读过一些论坛,每个分区只有一个用户可以阅读。

  • 我们目前在HDF(Hortonworks Dataflow)3.3.1上,它捆绑了Kafka 2.0.0,并且正在尝试使用分布式模式下的Kafka Connect,以推出一个Google Cloud PubSub接收器连接器。我们正在计划将一些元数据发回到Kafka主题中,并且需要将一个Kafka生产者集成到Sink任务Java代码的flush()函数中。 这是否会对Kafka Connect向K

  • 我有一个使用ActiveMQ的消息队列。web请求用persistency=true将消息放入队列。现在,我有两个消费者,它们都作为单独的会话连接到这个队列。使用者1总是确认消息,但使用者2从不这样做。 JMS队列实现负载平衡器语义。一条消息将被一个使用者接收。如果在发送消息时没有可用的使用者,它将被保留,直到有可以处理消息的使用者可用为止。如果使用者接收到一条消息,但在关闭之前没有确认它,那么该

  • 我有4个分区和4个消费者(例如A、B、C、D)。如何使用使用者组配置哪个使用者将从哪个分区读取数据。我用的是Kafka的春靴。