'Spring Data Gemfire: TTL expiration annotation is not working; how to set TTL using annotations?

In Gfsh, I was able to do: create region --name=employee --type=REPLICATE --enable-statistics=true --entry-time-to-live-expiration=900.

We have a requirement to create a Region using Java using the @EnableEntityDefinedRegions annotation. When I use describe in Gfsh the Regions are showing, but entity time to live expiration (TTL) is not setting by using below ways.

Any idea how to set TTL in Java?

Spring Boot 2.5.x and spring-gemfire-starter 1.2.13.RELEASE are used in the app.

@EnableStatistics
@EnableExpiration(policies = {
        @EnableExpiration.ExpirationPolicy(regionNames = "Employee", timeout = 60, action = ExpirationActionType.DESTROY))
})
@EnableEntityDefinedRegions 
public class BaseApplication {
....

@Region("Employee")
public class Employee {

or

@EnableStatistics
@EnableExpiration
public class BaseApplication {
----

@Region("Employee")
@TimeToLiveExpiration(timeout = "60", action = "DESTROY")
@Expiration(timeout = "60", action = "DESTROY")
public class Employee {
....

or

using bean creation way also not working, getting error "operation is not supported on a client cache"

@EnableEntityDefinedRegions
//@PeerCacheApplication  for peer cache Region is not creating PCC gemfire 
public class BaseApplication {
---
}
   
@Bean(name="employee")
PartitionedRegionFactoryBean<String, Employee> getEmployee
        (final GemFireCache cache,
         RegionAttributes<String, Employee> peopleRegionAttributes) {
    PartitionedRegionFactoryBean<String, Employee> getEmployee = new PartitionedRegionFactoryBean<String, Employee>();
    getEmployee.setCache(cache);
    getEmployee.setAttributes(peopleRegionAttributes);
    getEmployee.setCache(cache);
    getEmployee.setClose(false);
    getEmployee.setName("Employee");
    getEmployee.setPersistent(false);
    getEmployee.setDataPolicy( DataPolicy.PARTITION);
    getEmployee.setStatisticsEnabled( true );
    getEmployee.setEntryTimeToLive( new ExpirationAttributes(60) );
    return getEmployee;
}

@Bean
@SuppressWarnings("unchecked")
RegionAttributesFactoryBean EmployeeAttributes() {
    RegionAttributesFactoryBean EmployeeAttributes = new RegionAttributesFactoryBean();

    EmployeeAttributes.setKeyConstraint( String.class );
    EmployeeAttributes.setValueConstraint( Employee.class );

 }


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source