Как получить только последнее сообщение темы Кафки? - PullRequest
0 голосов
/ 20 апреля 2019

Есть ли способ разложить сообщения так, чтобы использовалось только последнее сообщение?

Я пытался сохранить сообщения в списке, но на самом деле это не сработало

var consumer = new Consumer(new ConsumerOptions(topic, router));

foreach (var message in consumer.Consume())
{
    Console.WriteLine(Encoding.UTF8.GetString(message.Value));
}

Вывод должен быть: 1, 2, 3, 4

Вывод: 1, 1, 2, 1, 2, 3, 1, 2, 3, 4

Ответы [ 2 ]

0 голосов
/ 21 апреля 2019

Вы можете использовать то, что называется Журнал сжатия , который будет "урезать" сообщения с тем же ключом. Поэтому, когда вы отправляете сообщения с одним и тем же ключом, вы получите только последнее сообщение / значение для этого ключа. Эта функция включена по умолчанию. Когда вы отправляете сообщения 1, 1, 2, 1, 2, 3, 1, 2, 3, 4 и хотите прочитать их как 1, 2, 3, 4 вы даете сообщениям одинаковые ключи, которые должны быть перезаписаны друг другом (поэтому все сообщения 1 получают одинаковый ключ, все сообщения 2 получают одинаковый ключ, ... ).

0 голосов
/ 21 апреля 2019

На самом деле, единственный способ сделать то, что вы хотите, это иметь тему с одним разделом и установить max.poll.records на один.

В противном случае, нет пути к этому, потому что последнее сообщение не имеет смысла. Любое входящее сообщение может быть помещено в разные разделы, и у вас есть несколько последних сообщений относительно количества разделов в вашей теме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...