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

pkwftd7m  于 2021-06-04  发布在  Kafka
关注(0)|答案(2)|浏览(506)

假设,我有3个Kafka经纪人,一个Zookeeper,50个生产者,50个消费者和1个主题( testTopic1 ). 所有的消费者都被订阅了 testTopic1 . 现在,我将发送50个信息,在同一时间与50生产者对同一主题( testTopic1 ) . 现在我希望kafka集群不要同时向消费者发送超过40条消息。剩下的10个会继续排队或者放弃。
也许这是Kafka的负载平衡。我不明白我将如何做这项工作。我是Kafka的新人,请帮帮我。

qlvxas9a

qlvxas9a1#

Kafka的经纪人很蠢。他们不能限制/删除发布给Kafka的信息。
如果所有Kafka消费者都属于同一消费群体,并且有50个消费者,那么所有消费者可能会或可能不会同时收到这50条消息,具体取决于密钥。如果多个消息具有相同的密钥,那么所有相同的密钥消息将由单个使用者逐个侦听。如果所有50条消息都有不同的密钥,那么它们可能被相同或不同的使用者监听,也可能不监听(取决于密钥的散列)。
为了更好的理解,你能解释一下你的用例吗。

vmjh9lq9

vmjh9lq92#

kafka代理不能随机丢弃消息。但您可以在使用者中实现逻辑,以便在处理时删除消息。
如果你有一个单独的主题和该主题的单独分区;您的消费者中属于同一消费者组的一个将处理您的所有消息,因为在消费者端处理时分区保证了排序。
如果您有10个用户组,每个用户组属于5个用户,并且主题只有一个分区,则至少有10个用户处理来自主题的消息。如果消费者组1中的一个消费者未能处理该消息,则来自同一消费者组的另一个消费者将处理该消息。
如果您需要在处理时从10条消息中随机删除1条消息,可以通过调整consumer端的逻辑来实现。但按消费群冲销按经纪人所有数据处理完毕,若系统配置为在经纪人端维护冲销管理。

相关问题