У меня такое ощущение, что пунктуатор может получить доступ к данным локального хранилища, в то время как библиотека Java KafkaStreams перестраивает его, воспроизводя элементы в разделе журнала изменений
Давайте опишем, каков наш сценарий: у меня есть приложение A KafkaStreams (написанное на Java), в котором мы потребляем из одной темы «входящая тема», и мы помещаем некоторые объекты в локальное хранилище, используя в качестве ключа метку времени плюс какой-то уникальный идентификатор, что-то вроде:
ключ -> 201906122345_ds243132eddsfs
значение -> объект
Затем в любой момент из этого магазина у нас есть пунктуатор, считывающий диапазон элементов от "" до теперь выраженного в ггггммддччММ (т. 201906122345). Мы хотели обработать эти данные только один раз. Они читаются, удаляются из магазина и пересылаются по другой теме «промежуточный раздел», где они используются и обрабатываются другим процессором.
Мы заметили, что когда мы добавляем узлы в приложение A или когда Kafka перебалансирует разделы между узлами, мы обрабатываем старые записи. Я предполагаю, что пунктуатор получает доступ к локальному хранилищу, в то время как библиотека KafkaStreams перестраивает его. Мне удалось найти несколько таких случаев только при восстановлении локального магазина.
Вопрос: это ожидаемое поведение? Я неправильно использую местные магазины? Можно ли как-то настроить другое поведение, чтобы пунктуатор не работал при восстановлении локального хранилища?