C++ with Kafka - 消费者只收到一些生产者消息

C++ with Kafka - consumer just receives some producer messages

我正在使用以下 C++ 代码向 Kafka 生成消息:

#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!
    }
}

在我有 运行 ZookeeperKafka server 的机器上,我 运行 一个 consumer,以显示收到的消息,通过使用这个:

bin/kafka-console-consumer.sh --bootstrap-server 192.168.1.100:9092 --topic test

我的 C++ 代码生成以下内容:

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

我原以为消费者会收到所有这些消息,但我只看到了一些:

{'msg number' : 40}
{'msg number' : 58}
{'msg number' : 70}
{'msg number' : 75}
{'msg number' : 91}
{'msg number' : 96}

再也没有收到。

如果我删除该行:

std::this_thread::sleep_for(std::chrono::milliseconds(50));

我没有收到任何消息。 为什么我的 Kafka 服务器没有收到我的所有消息?

原评论:

It is probably sort of spam prevention, i.e. sending messages out too quickly and the server is just ditching them

Web 服务器提供商开发了许多不同的反垃圾邮件技术。这是为了阻止有人通过发送大量网络流量向您的服务器发送垃圾邮件。我认为这可能是您正在做的事情

https://en.wikipedia.org/wiki/Anti-spam_techniques