我们正在寻找一个新的消息传递平台,并将我们的选择范围缩小到rabbitmq或kafka。
现在,我倾向于Kafka,但我有一些怀疑,这是一个好的选择,鉴于我们的要求之一。
我们需要一个由未知数量的消费者使用的队列。也就是说,我们需要在“工人”在线处理时动态地添加和删除消费者。而且,工人们随时都可以下车。
例如,我们可以启动一个完全没有消费者的队列,然后消费者的数量可能增长到30。后来可能会增长到5000或更多,然后回落到3。
我们不关心这个特定用例的消息顺序。Kafka适合这样吗?
此外,我们还计划维护一个消费线程池,以便工作人员可以获取单个消息并对其进行处理。所以泳池里可能有100个消费者,只有20个工人。有没有可能我们最终在其他80个消费者中得到消息,而这些消费者由于消息发送缓冲而没有在工作者中使用?换句话说,kafka是否像某些消息传递系统那样,在用户被请求之前预先向他们传递消息?
1条答案
按热度按时间kqlmhetl1#
是的,Kafka绝对符合你的要求。你可以有多对多的生产者/消费者。如果您的所有消费者都在同一消费者组中,则所有消息都将在所有消费者之间均匀分布。这也不是问题,如果你关闭/添加新的消费者,Kafka将自动为你管理所有。
最后一个问题是,kafka的消费者是基于pull的,因此检查是否有一些消息需要处理是消费者的责任。