j'utilise le code C++
suivant pour produire des messages à Kafka
:C++ avec Kafka - consommateur reçoit juste des messages de producteurs
#include <thread>
#include <cppkafka/producer.h>
using namespace cppkafka;
int main()
{
for(int i = 0 ; i < 100 ; i++)
{
std::cout << "sending msg number: " << i << std::endl;
std::string str("{'msg number' : " + std::to_string(i) + "}");
// Create a message builder for this topic
MessageBuilder builder("test");
// Construct the configuration
Configuration config =
{
{ "metadata.broker.list", "192.168.1.100:9092"}
};
// Create the producer
Producer producer(config);
builder.payload(str);
producer.produce(builder); //Only a few messages are received!
std::this_thread::sleep_for(std::chrono::milliseconds(50));//If I remove this, no message is received!
}
}
Sur ma machine où j'ai courir le Zookeeper
et Kafka server
, je suis en cours d'exécution un consumer
, pour afficher les messages reçus, en utilisant ceci:
bin/kafka-console-consumer.sh --bootstrap-server 192.168.1.100:9092 --topic test
Mon code C++
produit les éléments suivants:
sending msg number: 0
sending msg number: 1
sending msg number: 2
sending msg number: 3
(...) //from 0 to 99...all the messages are sent!
sending msg number: 98
sending msg number: 99
j'attendais le consommateur, de recevoir tous ces messages, mais je vois que quelques-uns:
{'msg number' : 40}
{'msg number' : 58}
{'msg number' : 70}
{'msg number' : 75}
{'msg number' : 91}
{'msg number' : 96}
Et pas plus reçu.
Si je supprime la ligne:
std::this_thread::sleep_for(std::chrono::milliseconds(50));
je ne reçois aucun message. Pourquoi mon serveur Kafka
ne reçoit-il pas tous mes messages?
Serait-ce une sorte de prévention du spam, à savoir l'envoi de messages trop rapidement et le serveur est juste les amerrissage>? – GPPK
J'ai pensé à cela, c'est pourquoi j'ai mis le sommeil (50ms). De toute façon, si je l'utilise, je ne reçois toujours pas tous les messages. Kafka ne devrait-il pas pouvoir tout recevoir et les mettre en file d'attente? – waas1919
Salut @GPPK pouvez-vous mettre votre commentaire comme réponse? Vous avez raison et c'est la réponse à cette question. – waas1919