На самом деле есть 3 различных способа, которыми разработчик может настроить пользовательскую политику истечения срока действия для Региона с помощью интерфейса Pivotal GemFire o.a.g.cache.CustomExpiry
в SDG
С учетом реализации * 1006 для конкретного приложения* ...
package example.app.gemfire.cache;
import org.apache.geode.cache.CustomExpiry;
import org.apache.geode.cache.ExpirationAttributes;
import ...;
class MyCustomExpiry implements CustomExpiry<String, Object> {
ExpirationAttributes getExpiry(Region.Entry<String, Object> entry) {
...
}
}
Во-первых, подход XML.
<bean id="customTimeToLiveExpiration"
class="example.app.gemfire.cache.MyCustomExpiry"/>
<gfe:partitioned-region id="Example" persistent="false">
<gfe:custom-entry-ttl ref="customTimeToLiveExpiration"/>
<gfe:custom-entry-tti>
<bean class="example.app.gemfire.cache.MyCustomExpiry"/>
</gfe:custom-entry-tti>
</gfe:partitioned-region>
Как видно из приведенного выше примера, вы можете определить «пользовательские» политики срока действия, используя либо ссылку на компоненткак в объявлении политики срока действия вложенного времени жизни (TTL) или с использованием анонимного определения компонента, как в политике истечения срока действия вложенного времени ожидания (TTI) в «примерном» определении компонента области PARTITION.
Точные определения см. В SDG XML-схеме .
Во-вторых, вы можете добиться того же, что и Java Config ...
@Configuration
class GemFireConfiguration {
@Bean
MyCustomExpiry customTimeToLiveExpiration() {
return new MyCustomExpiry();
}
@Bean("Example")
PartitionedRegionFactoryBean<String, Object> exampleRegion(
GemFireCache gemfireCache) {
PartitionedRegionFactoryBean<String, Object> exampleRegion =
new PartitionedRegionFactoryBean<>();
exampleRegion.setCache(gemfireCache);
exampleRegion.setClose(false);
exampleRegion.setPersistent(false);
exampleRegion.setCustomEntryTimeToLive(customTimeToLiveExpiration());
exampleRegion.setCustomEntryIdleTimeout(new MyCustomExpiry());
return exampleRegion;
}
}
Наконец, вы настраиваете обаПолитики истечения срока действия TTL и TTI с использованием конфигурации истечения срока действия на основе аннотаций SDG, как определено здесь .В наборе тестов SDG есть тестовый класс вместе с конфигурацией , демонстрирующий эту возможность.
Дополнительную информацию о конфигурации истечения на основе аннотаций можно найти в SDG здесь .
Надеюсь, это поможет!
-Джон