Apache kafka 如何控制Kafka群集发送的请求/消息?

Apache kafka 如何控制Kafka群集发送的请求/消息?,apache-kafka,load-balancing,kafka-cluster,Apache Kafka,Load Balancing,Kafka Cluster,假设我有3个卡夫卡经纪人、一个动物园管理员、50个制作人、50个消费者和1个主题(testTopic1)。 所有消费者都订阅了testTopic1。现在,我将与50位制作人同时向同一主题发送50条消息(testTopic1)。现在我希望Kafka集群不会同时向消费者发送超过40条消息。剩下的10人将继续排队或放弃排队 也许这是卡夫卡的负载平衡。 我不明白我将如何做这项工作。我是卡夫卡的新手,请帮忙。卡夫卡经纪人都是笨蛋。他们不能限制/删除发布给卡夫卡的消息 如果所有卡夫卡消费者都属于同一消费者群

假设我有3个卡夫卡经纪人、一个动物园管理员、50个制作人、50个消费者和1个主题(
testTopic1
)。 所有消费者都订阅了
testTopic1
。现在,我将与50位制作人同时向同一主题发送50条消息(
testTopic1
)。现在我希望Kafka集群不会同时向消费者发送超过40条消息。剩下的10人将继续排队或放弃排队

也许这是卡夫卡的负载平衡。
我不明白我将如何做这项工作。我是卡夫卡的新手,请帮忙。

卡夫卡经纪人都是笨蛋。他们不能限制/删除发布给卡夫卡的消息

如果所有卡夫卡消费者都属于同一消费者群体,并且有50个消费者,则所有消费者可能会或可能不会同时收到这50条消息,具体取决于密钥。如果多条消息具有相同的密钥,则单个消费者将逐个侦听所有相同的密钥消息。如果所有50条消息都有不同的密钥,那么它们可能会被相同或不同的使用者监听,也可能不会(取决于密钥的散列)


为了更好地理解您的用例,您能解释一下吗。

Kafka broker不能随机丢弃消息。但您可以在使用者中实现逻辑,以便在处理时删除消息

如果您有一个主题和该主题的单个分区;您的消费者中属于同一消费者组的一个将处理您的所有消息,因为分区保证了在消费者端处理中的顺序

如果您有10个用户组,每个用户组属于5个用户,并且该主题有一个分区,则至少有10个用户处理来自该主题的消息。如果消费者组1中的一个消费者未能处理该消息,则同一消费者组中的另一个消费者将处理该消息


如果您需要在处理过程中从10条消息中随机删除1条消息,您可以通过调整consumer end中的逻辑来实现。但根据客户组,根据代理进行抵销,所有数据都在其末尾进行处理,若系统配置为在代理端维护抵销管理

当然。。。我正在一个微服务上使用这个。我的每个服务都与外部节点通信。这些外部节点有一些限制,我不能一次发送50个请求。这就是为什么我想控制我的请求。“一次50个请求”是什么意思?每秒50个电话还是什么?同时50个电话。50个电话只是一个例子。它可以是多多少少,没有什么比并发的更好。它可以是50次呼叫/秒或50次呼叫/纳秒,或者其他一些,但与50次并发不同。它需要每秒0.50次呼叫。