прочтения сообщения из топика. Например, есть сообщение в топике, у него в заголовке (или пейлоаде) есть временная метка. Есть ли механизм, который позволит законсюмить данное сообщение через n милисекунд (например, через 10 секунд) относительно временной метки ?
у консумера есть методы pause / resume. они позволяют остановить потребление сообщений из партиции. используя эти два примитива можно построить алгоритм, который удовлетворит задаче
Все-таки консюмер апи. @javaguy спасибо за направление, буду копать.
консюмер апи не предполагает нигде задержку
Либо как писали выше, с помощью pause/resume, либо на уровне приложения каким-то образом «усыплять» поток потребителя, помня только о конфигурации consumer-а, чтобы это время сна не повышало тайм-аут, с который consumer делает poll, чтобы не произошло ребалансировки. Мы в своё время делали это на уровне приложения
@merenaas Спасибо за отклик. Про интервал и ребалансировку - все так, логично. Если не сравнивать интервал времни паузы, интервал пола и хартбит консюмера - можно нарваться на ребалнсировку. Хочу еще раз проговорить: если правильно понимаю Вашу идею, то в потоке, где полим, делать pause на опред интервал, а потом resume? Все руками, верно?
Еще вопрос: Вы полили батчем или по одной записи?
Не уверена, что это будет правильно работать, если это делать в одном потоке. Мы усыпляли консьюмеров по какому-то событию извне. Может быть, лучше действительно на poll генерить некоторое событие, на которое будет подписан класс-держатель консьюмеров, который будет усыплять тех, кого необходимо(пишу на Java, отсюда эти ООП заморочки)
Батчем, но у нас над Kafka-client ещё обёртка Spring
Spring оборачивает консюмер апи и ничего нового не добавляет. Ок, более-менее понятно. Спасибо
Ну, это так, для уточнения. Успехов!
Обсуждают сегодня