У меня есть потребитель Kafka, который подписывается на следующие темы MY_TOPIC
, MY_UNINTERESTED_TOPIC
.
В следующем сценарии меня не интересует вторая тема, но я должен был упомянуть ее, потому что, если я настрою ее, используя что-то вроде auto.offset.reset
, это может затронуть все темы.
В теме MY_TOPIC
Я публикую различные виды сообщений: MESSAGE_TYPE_A
и MESSAGE_TYPE_B
. Оба сообщения являются экземплярами BaseKafkaMessage
(пользовательский класс) с разными свойствами.
Теперь мне интересно найти только последнее сообщение типа MESSAGE_TYPE_A. Как я могу это сделать?
Реальный сценарий таков: я публикую два типа сообщений на одну и ту же тему. Один из них используется для подготовки локального кэша у каждого потребителя, который интересуется этой темой и этим сообщением. Если потребитель останавливается, когда он перезагружается, он должен повторно инициализировать свой кэш с последней версией MESSAGE_TYPE_A
. MESSAGE_TYPE_B
следует игнорировать. Я не хочу отправлять уведомление о Кафке поставщику данных, чтобы снова опубликовать данные, потому что всем подписчикам предстоит выполнить много ненужной работы.
Как я могу получить это? Это возможно?
Я нашел https://docs.spring.io/spring-kafka/reference/htmlsingle/#seek, но я не уверен, что это то, что я ищу, или есть ли другой способ сделать это.