降低Kafka使用者的吞吐量而不导致消息排队?

时间:2020-08-25 10:09:12

标签: java apache-kafka partition throttling throughput

我需要一个Kafka主题,该主题在同一组中具有多个Java使用者。一个要求是我们必须能够减少特定使用者的吞吐量。现在,由于据我所知kafka的工作原理,仅在读取之间引入睡眠会导致分配给消费者的消息堆积,这是我们不希望的。消费者的节流应该最好能够随意进行,而不必重新启动消费者(除了被节流的消费者)或生产者。

经过一番研究,我只能找到两种方法来做到这一点:

  1. 在消耗一定数量后仅断开消耗器一段时间,以保持静态吞吐量。这将导致经纪人将其分区重新分配给其他使用者。
  2. 为生产者创建一个自定义分区程序,该程序将查看分区元数据并优先处理未限制的元数据。从Java Kafka API来看,它似乎不支持自定义元数据,因此该数据必须来自其他地方。

这就是全部吗?我认为节流消费者将是一个更常见的用例,但是我一直找不到能满足我们要求的东西。 如果您知道更好的解决方案,请回答。谢谢。

0 个答案:

没有答案