Moqui 中特定实体的缓存配置

Cache configuration on a particular entity in Moqui

我测试了特定实体产品的缓存配置,相关的 linkedin 讨论 here

我有一个缓存项配置

<cache name="entity.record.one.mantle.product.Product" expire-time-idle="60" expire-time-live="600"/>

存在问题:

我不确定第二个是否是所需的行为。也许产品更新通过框架清除缓存。如果是,那就是很棒的功能。如果不是,那么它应该是一个问题,这意味着结果不是来自缓存。

关于第 1 点:只允许一个过期时间,idle 或 live,如果两者都指定,则使用 idle 过期时间。基本上,一个底层缓存可以有一个过期策略,它有一个类型(空闲、活动)和以秒为单位的时间。

关于第 2 点:是的,这是预期的行为。如果记录被缓存,即使是缓存的视图实体和值列表,自动缓存清除应该始终在更新记录时起作用。有相当复杂的代码来处理这个问题,还有各种自动化测试来确保它在不同的场景中工作。

在部署多个应用程序服务器时,无论记录(实体值)在哪个服务器上发生更改,当前推荐的跨所有服务器处理自动缓存清除的方法是使用 moqui-hazelcast 组件,该组件使用分布式主题发送有关更新记录的消息,每个服务器可以根据每个服务器缓存的内容用于自动缓存清除。