Я пытаюсь эмулировать рисование потока из Sources.mapJournal
через IMap, который получает данные с устройства IoT. Обработка этого потока слишком медленная, и через 30-60 секунд я получаю большой накопленный результат.
Когда я начал часто обновлять IMap с небольшими данными (12 КБ на значение), исключение:
com.hazelcast.ringbuffer.StaleSequenceException: sequence: 123 слишком мало и хранилище данных отключено.
Я увеличил емкость журнала IMap по умолчанию в 10 раз. После этого он стал стабильным, но очень медленным. Аналогичная проблема возникает, когда я обновляю IMap с большими значениями (около 1,2 МБ за 5 секунд). Кроме того, у меня есть несколько подключенных устройств IoT, и у каждого из них есть свое задание Jet с тем же конвейером:
StreamStage<TagPosition> sourceSteam =
p.drawFrom(Sources.<TagPosition, String, TagPosition>mapJournal(
Constants.IMAP_TAGS_POSITIONS_BUFFER,
Util.mapPutEvents().and(entry -> ((String) entry.getKey()).startsWith(instanceNumber)),
Util.mapEventNewValue(),
JournalInitialPosition.START_FROM_OLDEST));
// Drain to SmartMap
sourceSteam.drainTo(SmartMapSinks.newTagPositionSink(instanceNumber));
Заранее спасибо!
UPD:
- Размер журнала: EventJournalConfig.DEFAULT_CAPACITY * 10 = 100
000 (1 раздел)
- Версия Jet - 0.7.2
- Сериализуемые классы
реализует
com.hazelcast.nio.serialization.IdentifiedDataSerializable