我对Kafka很新,而且我目前已经被它提供的低得多的API所淹没,而RabbitMQ(我以前使用的消息代理)也是如此。我试图解决的问题如下:
我有3个主题:
这三个主题充满了我必须处理的消息。工作人员阅读消息,进行一些处理并继续使用HTTP POST发送,该POST对所有3个主题共享带宽限制。
我需要什么:
如果队列2& 3是空的,处理后100%的可用带宽应该进入队列1 - 如果有多个队列上有消息,则应使用活动队列之间分配的“权重”来分配可用的带宽。
目前,除了'权重'分布之外,一切正常(现在,它们以循环方式分发)。优先级不是一种选择,因为在使用优先级时,优先级较高的消息将始终在优先级较低的消息之前传递。
Kafka有这样的选择吗?在RabbitMQ中,我解决了它为每个队列分配不同的预取值
答案 0 :(得分:0)
据我所知,卡夫卡现在已经不太可能了。让我们记下一些事实:
结论:为主题获取更多CPU能力的唯一方法是拥有更多分区和相应数量的使用者。
您可以根据权重设置分区数量:
有多少消费者?使用10个消费者,0 ... 9,让他们按如下方式订阅主题:
现在每个消费者必须处理两个主题,当所有主题都有数据时,消费者比率反映了您要求的5:4:1。当前两个主题枯竭时,仍然有10个消费者根据需要研究主题3。