Получение "org.apache.kafka.common.network.InvalidReceiveException: Недействительный прием (размер = 1195725856 больше, чем 104857600)"

Я установил zookeeper и kafka, первый шаг: запуск zookeeper с помощью следующих команд:

bin/zkServer.sh start
bin/zkCli.sh

второй шаг: запуск кафки сервера

bin/kafka-server-start.sh config/server.properties

Кафка должна работать на localhost: 9092

но я получаю следующую ошибку:

WARN Unexpected error from /0:0:0:0:0:0:0:1; closing connection (org.apache.kafka.common.network.Selector)
org.apache.kafka.common.network.InvalidReceiveException: Invalid receive (size = 1195725856 larger than 104857600)

Я перехожу по следующей ссылке: Link1 Link2

Я новичок в kafka, пожалуйста, помогите мне настроить его.

Ответ 1

Попробуйте сбросить значение socket.request.max.bytes в $KAFKA_HOME/config/server.properties превышающее размер вашего пакета, и перезапустите сервер kafka.

Ответ 2

Скорее всего, вы пытаетесь подключиться к не-SSL-слушателю. Если вы используете посредник порта по умолчанию, вам необходимо убедиться, что: 9092 - это порт прослушивателя SSL на этом посреднике.

Например,

listeners=SSL://:9092
advertised.listeners=SSL://:9092
inter.broker.listener.name=SSL

должен сделать свое дело за вас (убедитесь, что вы перезапустите Kafka после повторной настройки этих свойств).

В качестве альтернативы вы можете пытаться получить слишком большой запрос. Максимальный размер - это размер по умолчанию для socket.request.max.bytes, который составляет 100 МБ. Поэтому, если у вас есть сообщение размером более 100 МБ, попробуйте увеличить значение этой переменной в server.properties.

Ответ 3

Ответ, скорее всего, в одной из 2 областей

а. socket.request.max.bytes

б. вы используете конечную точку без SSL для соединения производителя и потребителя тоже.

Примечание: порт, который вы запускаете, действительно не имеет значения. Убедитесь, что если у вас есть ELB, ELB возвращает все проверки здоровья, чтобы быть успешным.

В моем случае у меня был AWS ELB, противостоящий KAFKA. Я указал протокол Интернета как TCP вместо Secure TCP. Это вызвало проблему.

#listeners=PLAINTEXT://:9092
inter.broker.listener.name=INTERNAL
listeners=INTERNAL://:9093,EXTERNAL://:9092
advertised.listeners=EXTERNAL://<AWS-ELB>:9092,INTERNAL://<EC2-PRIVATE-DNS>:9093

listener.security.protocol.map = INTERNAL: SASL_PLAINTEXT, EXTERNAL: SASL_PLAINTEXT sasl.enabled.mechanisms = PLAIN sasl.mechanism.inter.broker.protocol = PLAIN

Вот фрагмент моего производителя .properties и consumer.properties для внешнего тестирования.

bootstrap.servers=<AWS-ELB>:9092
security.protocol=SASL_SSL
sasl.mechanism=PLAIN