J'ai installé zookeeper et kafka, Première étape: Exécuter zookeeper avec les commandes suivantes:
bin/zkServer.sh start
bin/zkCli.sh
deuxième étape: exécuter le serveur kafka
bin/kafka-server-start.sh config/server.properties
kafka devrait fonctionner chez localhost: 9092
mais j'obtiens l'erreur suivante:
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)
Je suis le lien suivant: Link1Link2
Je suis nouveau sur kafka, aidez-moi s'il vous plaît à le configurer.
Essayez de réinitialiser la valeur socket.request.max.bytes
du fichier $KAFKA_HOME/config/server.properties
à une taille supérieure à votre taille de paquet et redémarrez le serveur Kafka.
Très probablement, vous essayez de vous connecter à un auditeur non-SSL. Si vous utilisez le courtier par défaut du port, vous devez vérifier que: 9092 est le port du port d'écoute SSL sur ce courtier.
Par exemple,
listeners=SSL://:9092
advertised.listeners=SSL://:9092
inter.broker.listener.name=SSL
devrait faire l'affaire pour vous (Assurez-vous de redémarrer Kafka après avoir reconfiguré ces propriétés).
Vous pouvez également essayer de recevoir une demande trop volumineuse. La taille maximale est la taille par défaut pour socket.request.max.bytes
, qui est 100 Mo. Donc, si vous avez un message de plus de 100 Mo, essayez d’augmenter la valeur de cette variable sous server.properties
.
La réponse est probablement dans l'un des 2 domaines
une. socket.request.max.bytes
b. vous utilisez également un noeud final non SSL pour connecter le producteur et le consommateur.
Remarque: le port que vous utilisez ne compte vraiment pas. Si vous avez un ELB, assurez-vous qu’il renvoie tous les bilans de santé pour réussir.
Dans mon cas, j'avais un AWS ELB face à KAFKA. J'avais spécifié le protocole Listernet en tant que TCP au lieu de Secure TCP. Cela a causé le problème.
#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
Voici un extrait de my producteur.properties et de consommateur.properties pour des tests externes.
bootstrap.servers=<AWS-ELB>:9092
security.protocol=SASL_SSL
sasl.mechanism=PLAIN