3

I'm currently trying to post messages from a for-loop on a kafka server running on my local machine using the kafka-net library in c# (https://github.com/Jroland/kafka-net), following the example given on the linked repo, my code is the following.

string kafkaServer = "http://" + ip + ":" + port;
Uri uri = new Uri(kafkaServer);
var options = new KafkaOptions(uri);
var router = new BrokerRouter(options);
var client = new Producer(router);
...
foreach(string sumup in LS){
    payloadJson["fullPathDataFolder"] = remoteFolder;
    payloadJson["globalName"] = GloablName;
    payloadJson["name"] = name;
    payloadJson["text"] = sumUp + "\n";
    payloadJson["type"] = type;
    string payload = payloadJson.ToString();
    KafkaNet.Protocol.Message msg = new KafkaNet.Protocol.Message(payload);
    client.SendMessageAsync(topic, new List<KafkaNet.Protocol.Message> { msg }).Wait();
}

This code run through the first iteration and i'm able to retrieve the first string from a second machine linked to the same server with a consumer. Then the code here above remain stuck at the intruction:

client.SendMessageAsync(topic, new List<KafkaNet.Protocol.Message> { msg }).Wait();

If now I remove the .Wait() this code run quite fast but it randomly ignore some of the string i send What am I missing ?

P.S. I'v tried also to use Confluent.kafka and i got similar problems

P.P.S. It's important that this program run sequentially.

0 Answers0