Уменьшение пропускной способности Kafka consumer без постановки сообщений в очередь?

#java #apache-kafka #partition #throttling #throughput

#java #apache-kafka #раздел #регулирование #пропускная способность

Вопрос:

Мне нужна тема Kafka, в которой несколько потребителей Java находятся в одной группе. Одним из требований является то, что мы должны иметь возможность уменьшить пропускную способность конкретных потребителей. Теперь, из-за того, как работает kafka, насколько я понимаю, простое введение режима ожидания между чтениями приведет к накоплению сообщений, разделенных на потребителя, чего мы не хотим. Предпочтительно, чтобы регулирование потребителей могло выполняться по желанию без перезапуска ни потребителей (кроме того, который регулируется), ни производителей.

После некоторых исследований я смог найти только два метода для этого:

  1. Просто отключите потребителя на некоторое время после некоторого потребления, чтобы сохранить статическую пропускную способность. Это приведет к тому, что брокер переназначит свои разделы другим потребителям.
  2. Создайте пользовательский разделитель для производителей, который просматривал бы метаданные раздела и устанавливал приоритеты для тех, которые не регулируются. Глядя на Java Kafka API для этого, похоже, что он не поддерживает пользовательские метаданные, поэтому эти данные должны поступать из другого места.

Это все, что есть? Я чувствую, что регулирование потребителей было бы более распространенным вариантом использования, но я не смог найти ничего, что удовлетворяло бы нашим требованиям. Пожалуйста, ответьте, если вы знаете лучшие решения. Спасибо.