在apache中触发Ignite

问题描述 投票:3回答:2

任何人都可以告诉我Apache Ignite中是否有基于时间的触发策略?

我有一个对象有该到期日期当该日期(时间戳)到期我想要更新此值并在缓存中覆盖它是否可以在Apache Ignite

提前致谢

ignite in-memory-database gridgain
2个回答
1
投票

您可以使用急切的TTL:Apache IgniteExpiry Policies中配置基于时间的过期策略。这样,在一定时间之后,对象将从缓存中急切地过期。

然后,您可以订阅javax.cache.event.CacheEntryExpiredListener,它将在每次到期后触发,并从该侦听器更新缓存。但是,当条目从缓存中已经过期并且在将值更新到缓存之前,看起来会有一个小窗口。

如果您不接受上述窗口,则可以定期查询缓存中的所有条目,并更新所有早于某个到期时间的条目。在这种情况下,您必须确保所有条目都有一个时间戳记,该索引将被编入索引并在SQL查询中使用。像这样的东西:

SELECT *来自SOME_TYPE,其中timestamp> 2;

有关SQL查询的更多信息,请访问:Distributed QueriesLocal Queries


0
投票

也许是这样的:

cache.withExpiryPolicy(new CreatedExpiryPolicy(new Duration(TimeUnit.SECONDS, 123))).put(k, v);

到期时间仅适用于此条目。

对于触发器尝试连续查询:apacheignite.readme.io/docs/continuous-queries

© www.soinside.com 2019 - 2024. All rights reserved.