web-dev-qa-db-fra.com

Kafka - Courtier: taille du message trop grande

Je reçois Message size too large exception, lorsque j'essaye d'envoyer un message d'une taille supérieure à 1 Mo. L'erreur apparaît dans mon application cliente lorsque j'essaye de produire un message. Après quelques recherches sur Google, j'ai découvert que les paramètres devaient être modifiés afin d'augmenter la taille maximale du message. Eh bien, je l'ai fait en /kafka/config/server.properties fichier. J'ai ajouté les 2 paramètres suivants:

message.max.bytes=15728640
replica.fetch.max.bytes=15728640

De plus, j'ai ajouté fetch.message.max.bytes=15728640 à la /kafka/config/consumer.properties fichier. Tous les autres paramètres restent par défaut.

J'ai fait kafka redémarrage du serveur, mais j'obtiens toujours la même erreur.

P.S Kafka est 1.1.0.

3
managerger

Vous avez la bonne configuration mais vous devez également définir max.request.siz côté producteur.

props.put(ProducerConfig.MAX_REQUEST_SIZE_CONFIG, 15728640);

max.request.size La taille maximale d'une requête en octets. Ce paramètre limitera le nombre de lots d'enregistrements que le producteur enverra dans une seule demande pour éviter d'envoyer des demandes énormes. C'est aussi effectivement un plafond sur la taille maximale du lot d'enregistrements.

Du côté du courtier, vous avez déjà configuré le paramètre ci-dessous qui devrait fonctionner

message.max.bytes La plus grande taille de lot d'enregistrement autorisée par Kafka.

replica.fetch.max.bytes Le nombre d'octets de messages à essayer d'extraire pour chaque partition. Ce n'est pas un maximum absolu, si le premier lot d'enregistrements dans la première partition non vide de l'extraction est supérieur à cette valeur, le lot d'enregistrements sera toujours renvoyé pour garantir que la progression peut être effectuée. La taille maximale du lot d'enregistrement acceptée par le courtier est définie via message.max.bytes (configuration du courtier) ou max.message.bytes (configuration du sujet).

Côté sujet max.message.bytes, ce qui n'est pas nécessaire si vous avez déjà défini message.max.bytes côté courtier

max.message.bytes - c'est la plus grande taille du message que le courtier autorisera à être ajouté à la rubrique. Cette taille est validée en pré-compression. (Par défaut, message.max.bytes du courtier.)

Réfrence https://kafka.Apache.org/documentation/

2
sun007