如何为所有 Ignite 缓存设置过期时间?

How to set expiry time for all Ignite caches?

我正在通过特定配置启动 ignite。在该配置中,我指定了过期策略。但是过期不起作用。当我在 属性 中指定缓存名称时,它工作正常。

我添加了如下配置

<property name="expiryPolicyFactory">
        <bean class="javax.cache.expiry.CreatedExpiryPolicy" factory-method="factoryOf">
            <constructor-arg>
                <bean class="javax.cache.expiry.Duration">
                    <constructor-arg value="MINUTES"/>
                    <constructor-arg value="5"/>
                </bean>
            </constructor-arg>
       </bean>
   </property>

但这并不适用于所有缓存,

当我尝试如下配置时,它正在运行,

<bean class="org.apache.ignite.configuration.CacheConfiguration">
                     <property name="expiryPolicyFactory">
                      <bean class="javax.cache.expiry.CreatedExpiryPolicy" factory-method="factoryOf">
                        <constructor-arg>
                          <bean class="javax.cache.expiry.Duration">
                            <constructor-arg value="SECONDS"/>
                            <constructor-arg value="5"/>
                          </bean>
                        </constructor-arg>
                      </bean>
                    </property>
                    <property name="name" value="test"/>
                    <property name="atomicityMode" value="ATOMIC"/>
                    <property name="backups" value="1"/>
                </bean>

此处缓存 "test" 正确过期。

您可以声明一个包含 <expiryPolicyFactory>abstract CacheConfiguration bean,并从该 bean 继承(使用 parent="beanName")所有缓存配置。在 Spring:

中通常是这样做的
<bean id="expireCache" class="org.apache.ignite.configuration.CacheConfiguration" abstract="true">
    <property name="expiryPolicyFactory">
        <bean class="javax.cache.expiry.CreatedExpiryPolicy" factory-method="factoryOf">
            <constructor-arg>
                <bean class="javax.cache.expiry.Duration">
                    <constructor-arg value="MINUTES"/>
                    <constructor-arg value="5"/>
                </bean>
            </constructor-arg>
       </bean>
    </property>
</bean>

    <property name="cacheConfiguration">
        <list>
            <bean parent="expireCache">
                <property name="name" value="test"/>
                <property name="atomicityMode" value="ATOMIC"/>
                <property name="backups" value="1"/>
            </bean>
...

抽象 bean 应该与 IgniteConfiguration bean 一起放在顶层。