我正在尝试通过IMap模拟Sources.mapJournal
的流图,该IMap从IoT设备接收数据。该流的处理速度太慢,并且30-60秒后我得到了很大的累积结果。
当我开始使用少量数据(每个值12 KB)频繁更新IMap时,例外是:
com.hazelcast.ringbuffer.StaleSequenceException:sequence:123太小,数据存储被禁用。
我将IMap日记帐的默认容量增加了10倍。此后它变得稳定,但是非常缓慢。类似的问题是当我使用较大的值(每5秒约1.2 MB)更新IMap时。另外,我有几个已连接的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:
com.hazelcast.nio.serialization.IdentifiedDataSerializable
答案 0 :(得分:0)
问题在于多个作业使用单个IMap(和地图日志)。 Map日志产生的事件像一个批处理一样具有延迟,但不是流。
已解决。谢谢!