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

Я просто новичок Кафки и у меня проблема:

У меня есть тема 'A' в Kafka, я запускаю загрузочное приложение Spring и использую MessageChannel для отправки сообщения в тему 'A', затем я останавливаю приложение.

Есть ли возможность получить последнее сообщение, которое я отправил в тему «А» (не все сообщения), когда я снова запускаю приложение? Я искал все решения, но они мне не сильно помогли, он всегда получает сообщение сразу, если я только отправляю новое сообщение. Если у вас есть исполняемый код, пожалуйста, поделитесь, я очень признателен: (

    // Start application


    // Get latest message in topic 'A' then do some LOGIC
    if (exist latest message) {
          //Print latest message
    }

1 Ответ

0 голосов
/ 14 января 2019

Ваши потребители сохраняют свое смещение (то есть последнюю позицию чтения). После перезапуска они продолжают чтение с этого момента. Такое поведение разработано.

Свойства сброса смещения используются, когда смещение для этой конкретной группы потребителей по какой-то причине еще не известно (скажем, это новая группа потребителей или смещения истекли), но, тем не менее, обычно есть два варианта: а) перечитать все с самого начала б) начать слушать новые сообщения, забыв обо всем, что было раньше.

Есть хакерские способы достижения того, что вы описали, но они не просты и не рекомендуются (тривиальный: потребительские сообщения, просто пропускающие их, пока вы не достигнете EOF раздела)

Может быть, просто Кафка не подходит для этой проблемы.

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