HazelCast-过期侦听器延迟

时间:2018-11-05 14:51:16

标签: java listener delay hazelcast

问题是TTL过期后,地图监听器会提高3-5秒。

在这里我将新条目添加到地图

05-11-2018 14:38:57.197 INFO  [hz._hzInstance_1_3cc39d15-29b8-4f59-8bca-e47eae0476a1.event-26] MyEntryExpiredListener - :::::::::::entry was ADDED to the map  :::::::::::::::::::

TTL配置为10秒,但在约14秒后返回。

05-11-2018 14:39:11.326 INFO  [hz._hzInstance_1_3cc39d15-29b8-4f59-8bca-e47eae0476a1.event-26] MyEntryExpiredListener - :::::::::::entry was EXPIRED in the map  :::::::::::::::::::

我尝试设置配置属性:

 hazelcast.internal.map.expiration.cleanup.percentage=100,
 hazelcast.internal.map.expiration.task.period.seconds=1,

任何人都有经验并可以解决此问题吗?

1 个答案:

答案 0 :(得分:0)

Hazelcast的有效期有两种方式:

  1. 该条目在TTL /最大空闲秒持续时间后无效。当您尝试在TTL / max-idle-seconds之后获取条目时,将获得一个null值。
  2. 后台进程(称为到期任务)工作并清除过期的条目。可以使用您提到的属性优化此任务。

到期后,如果添加了任何侦听器,则会触发EntryEvent。但是,这不能保证您会在触发事件的确切时间收到该事件。 Hazelcast中的事件系统是异步工作的,并且基于“随遇而安”。该事件可能会在事件队列中等待一段时间。因此,通常会看到TTL值与事件触发之间的时间差。