ich folgenden C++
Code bin mit Nachrichten zu Kafka
produzieren:C++ mit Kafka - Verbraucher erhalten nur einige Produzenten Nachrichten
#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!
}
}
Auf meinem Rechner, wo ich die Zookeeper
und Kafka server
laufen habe, ich renne ein consumer
, die empfangenen Nachrichten zu zeigen, indem diese mit:
bin/kafka-console-consumer.sh --bootstrap-server 192.168.1.100:9092 --topic test
Mein C++
Code erzeugt die folgende:
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
Ich habe erwartet, die Verbraucher, all diese Nachrichten zu empfangen, aber ich sehe nur ein paar:
{'msg number' : 40}
{'msg number' : 58}
{'msg number' : 70}
{'msg number' : 75}
{'msg number' : 91}
{'msg number' : 96}
Und nicht mehr empfangen.
Wenn ich entfernen Sie die Zeile:
std::this_thread::sleep_for(std::chrono::milliseconds(50));
Ich erhalte keine Meldung. Warum empfängt mein Server Kafka
nicht alle meine Nachrichten?
Könnte es irgendeine Art von Spam-Prävention tun, das heißt das Senden von Nachrichten zu schnell aus und der Server Notwasserung sie nur>? – GPPK
Ich dachte daran, deshalb habe ich den Schlaf gelegt (50ms). Wie auch immer, wenn ich das benutze, erhalte ich immer noch nicht alle Nachrichten. Sollte Kafka nicht in der Lage sein, alles zu empfangen und in die Warteschlange zu stellen? – waas1919
Hallo @GPPK können Sie Ihren Kommentar als Antwort setzen? Du hast recht und das ist die Antwort auf diese Frage. – waas1919