卡夫卡是否能够拥有充足的消费者数量?

时间:2015-10-24 00:45:41

标签: jms rabbitmq messaging apache-kafka

我们正在寻找一个新的消息传递平台,并将我们的选择范围缩小到RabbitMQ或Kafka。

现在,我倾向于Kafka,但我有一些疑问,根据我们的要求,这是一个不错的选择。

我们需要有一个由未知数量的消费者使用的队列。也就是说,当“工作人员”上线进行处理时,我们需要动态添加和删除消费者。此外,工人可能随时辍学。

因此,例如,我们可能会启动一个根本没有消费者的队列,然后消费者的数量可能会增加到30个。之后它可能会增长到5000个或更多,然后再回落到3个。

我们不关心这个特定用例的消息排序。卡夫卡是否适合这个?

此外,我们计划维护一个消费者线程池,以便工作人员可以获取单个消息并对其进行处理。因此,池中可能有100名消费者,只有20名工人。是否有可能我们最终在其他80个消费者中发送消息,这些消息由于消息发送缓冲而未在工作人员中使用?换句话说,Kafka是否会像消息系统那样在请求之前向消费者预先发送消息?

1 个答案:

答案 0 :(得分:1)

是的,kafka绝对可以满足您的要求。您可以拥有多对多的生产者/消费者。如果您的所有消费者都在同一个消费者群体中,则所有消息将在所有消费者之间平均分配。如果您关闭/添加新消费者也不是问题,kafka将自动为您管理所有消费者。

对于您的上一个问题 - kafka消费者是基于拉取的,因此消费者有责任检查是否有一些消息需要处理。