У меня есть тестовое приложение в .NET, которое создает производителя kafka и отправляет несколько сообщений в тему с помощью клиентской библиотеки Confluent.
По какой-то причине подтверждение для первого сообщения всегда приходит на 1 секунду позже, подтверждениядля последующих сообщений приходят практически сразу.
Это нормальное поведение или мне не хватает какой-либо конфигурации?
- Мне кажется, я пытался настроить все конфигурации производителя, ничего не помогает, кроме установки EnableDeliveryReports = false.
- Тема не разбита на разделы и уже существует на момент отправки первого сообщения.
Если я обновлю приложение, чтобы отправлять сообщения нескольким темам, то первое сообщение каждой темеотправляется с задержкой в 1 секунду.
static void Main()
{
var producer = new Producer<Null, string>(new ProducerConfig
{
BootstrapServers = "localhost:9092",
LingerMs = 100,
BatchNumMessages = 1,
});
for (var i = 0; i < 10; i++)
{
var start = DateTime.Now;
producer.ProduceAsync(
new TopicPartition("test-topic", Partition.Any), new Message<Null, string>
{
Value = $"hello kafka! #{i}"
}).Wait(2000);
var now = DateTime.Now;
Console.WriteLine($"{now:HH:mm:ss.fff} Message sent in {(now - start).TotalMilliseconds:N1}.");
}
producer.Dispose();
Console.ReadLine();
}
Пример вывода:
18:06:13.605 Message sent in 1,007.0.
18:06:13.607 Message sent in 1.0.
18:06:13.608 Message sent in 1.0.
18:06:13.609 Message sent in 1.0.
18:06:13.610 Message sent in 1.0.
18:06:13.611 Message sent in 1.0.
18:06:13.612 Message sent in 1.0.
18:06:13.613 Message sent in 1.0.
18:06:13.614 Message sent in 1.0.
18:06:13.615 Message sent in 1.0.