【发布时间】:2016-05-06 01:55:50
【问题描述】:
我对 Kafka 还很陌生,与 RabbitMQ(我之前使用的消息代理)相比,它提供的低级 API 让我感到不知所措。我要解决的问题如下:
我有 3 个主题:
- 主题 1:权重为 10%
- 主题 2:权重为 40%
- 主题 3:权重为 50%
这 3 个主题充满了我必须处理的消息。工作人员阅读消息,进行一些处理并继续使用 HTTP POST 发送,该 HTTP POST 具有为所有 3 个主题共享的带宽限制。
我需要什么:
如果队列 2 和 3 为空,则处理后 100% 的可用带宽应进入队列 1 - 如果多个队列上有消息,则应使用活动队列之间分配的“权重”分配可用带宽。
目前,除了“权重”分布(现在,它们以循环方式分布)之外,一切都在工作。优先级不是一个选项,因为在使用优先级时,较高优先级的消息将始终在较低优先级的消息之前传递。
卡夫卡有这样的选择吗?在 RabbitMQ 中,我已经解决了为每个队列分配不同的预取值
【问题讨论】:
-
我认为 Kafka 爱好者不喜欢“队列”这个词,而是谈论日志。实际上,它混淆了您的问题的含义:当您说“队列”时,您是指主题还是分区?
-
我认为正确的 Kafka 术语应该是“主题”。重构我的 RabbitMQ 代码后,我继续使用上一个术语,但我会更新问题以更准确。
标签: apache-kafka apache-zookeeper