Чтение только одного сообщения из темы с использованием REST Proxy - PullRequest
4 голосов
/ 31 октября 2019

Я использую Kafka версии 2.2.0cp2 через Rest Proxy (в контейнере Docker). Мне нужно, чтобы потребитель всегда читал только одно сообщение.

Я установил значение max.poll.records=1 в файле /etc/kafka/consumer.properties следующим образом:

consumer.max.poll.records=1 ИЛИ:

max.poll.records=1

Это не имело никакого эффекта.

Установка этого значения в других конфигах также не дала никакого результата.

Ответы [ 2 ]

0 голосов
/ 31 октября 2019

Я не вижу ни одной настройки опроса потребителей, упомянутой в приведенной ниже ссылке

https://docs.confluent.io/current/kafka-rest/config.html

Но если вы знаете средний размер сообщения, вы можете передать max_bytes, как показано ниже, для управления размером записи

GET / потребители / группа тестов / экземпляры / my_consumer / records? Timeout = 3000 & max_bytes = 300000 HTTP / 1.1

max_bytes:

Максимальное количество байтов незашифрованных ключей и значений, которые должны быть включены в ответ. Это обеспечивает приблизительный контроль над размером ответов и объемом памяти, необходимым для хранения декодированного ответа. Фактическим пределом будет минимум этого параметра и конфигурации на стороне сервера consumer.request.max.bytes. По умолчанию не ограничено

0 голосов
/ 31 октября 2019

То есть consumer.properties не считывается из REST Proxy

Если предположить, что потребительские свойства можно изменить , env-var контейнера kafka-rest будет KAFKA_REST_CONSUMER_MAX_POLL_RECORDS, но этот параметрконтролирует только внутренний цикл опроса прокси-сервера, а не количество возвращаемых данных клиенту HTTP ...

Должен быть установлен флаг API limit, который не существует -https://docs.confluent.io/current/kafka-rest/api.html#get--consumers-(string-group_name)-instances-(string-instance)-records

...