Обновите MaterializedView, когда истечет срок аренды kafkatopic

avatar
Andy
1 июля 2021 в 16:07
18
0
0

У меня есть потребитель, который создает MaterializedView из темы (как показано ниже)

@Bean
public Consumer<KStream<String, Pojo>> readPassages() {
        return passages -> passages.toTable(Materialized.<String, Pojo, KeyValueStore<Bytes, byte[]>>as(STORE_NAME)
                        .withKeySerde(Serdes.String())
                        .withValueSerde(MySerdes.PojoSerde()));
}

Тема, из которой создано это mv, настроена с периодом хранения. Таким образом, kafka регулярно удаляет определенные старые сообщения из этой темы по истечении срока аренды. Я хотел бы получать информацию о таких удалениях, чтобы я мог сохранить свой mv is sysnc. В настоящее время всякий раз, когда это происходит, мой bean-компонент readPassages не знает об этих удалениях, поэтому mv все еще содержит старые сообщения. Если я перезапускаю приложение, представление корректно обновляется (поскольку оно снова создается из темы).

Можно ли вызывать @Bean с событиями key, null, чтобы mv всегда синхронизировался с темой kafka. Или есть прослушиватель периода удержания чего-то подобного, с помощью которого я могу обновить свой mv самостоятельно?

Источник

Ответы (0)