2017-10-25 8 views
0

Wir verwenden node.js mit No-Kafka-Client. Wir haben eine Datei-Upload-Funktion, bei der die Datei json ist und dann gelesen und in Base64 konvertiert wird, und der Produzent sendet sie an Kafka. Kafka hat eine Nachrichtengrößenbeschränkung konfiguriert als 6MBnode.js- kein-Kafka-Kafka Broker - MessageSizeTooLarge Fehler

Jetzt, wenn ich eine Datei der Größe 4.3-4.4 Mb hochladen erreicht es Kafka und wird verarbeitet. Aber wenn ich eine Datei> 4.4 MB hochlade, bekomme ich den KafkaError: MessageSizeTooLarge

Gibt es irgendwelche Konfigurationen, die ich in Node.js oder in keinem kafka Erzeuger/Klienten einstellen muss.

In den Client.js Datei-I die Anfrage Länge und die Länge messageset im Verfahren gedruckt, der die Anforderung erzeugt Wenn ich die Nachrichtenlänge Druck für einen 4,5 mb es zeigt die Anforderungslänge als 6.432.489 Datei, die von> 6 MB

und wenn ich die Nachrichtenlänge für eine 4,3 MB-Datei drucken zeigt es die Anforderungslänge als 5.838.373, die < 6MB ist

Wo liegen die zusätzlichen Daten kommen und wie kann ich damit umgehen.

Alles, was ich brauche, ist, dass eine Datei mit einer Größe von bis zu 5MB auf KAFKA hochgeladen wird.

Antwort

0

Das Problem gefunden. Die Base 64-Codierung erhöht die Größe der Nutzlast. Selbst wenn die Datei 5 MB groß ist, wird die Base64-Kodierung zu 6,3 Mb.

zu 5 MB Datei empfangen wir erhöht die kafka Nachricht Grenze zu 7 MB

+0

Warum Sie tun müssen, um Base64 die Nachricht verschlüsseln? Kannst du nicht einfach den JSON veröffentlichen? Ich weiß, mit Node-Rdkafka-Client können Sie sogar mit Snappy-Komprimierung veröffentlichen und die JSON-Nachricht noch kleiner machen. –