Improve CQ Auto-configuration by assessing the availability of a server or cluster first before enabling and auto-configuring CQ functionality.

This added capabilities relies on the new ClusterAwareConditions.

Resolves gh-53.
This commit is contained in:
John Blum
2019-09-12 14:28:59 -07:00
parent 1cf8986496
commit 8e30b4ddd2
4 changed files with 9 additions and 3 deletions

View File

@@ -21,10 +21,12 @@ import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Conditional;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.gemfire.client.ClientCacheFactoryBean;
import org.springframework.data.gemfire.config.annotation.ClientCacheConfigurer;
import org.springframework.data.gemfire.config.annotation.EnableContinuousQueries;
import org.springframework.geode.config.annotation.ClusterAvailableConfiguration;
/**
* Spring Boot {@link EnableAutoConfiguration auto-configuration} enabling Apache Geode's Continuous Query (CQ)
@@ -34,13 +36,16 @@ import org.springframework.data.gemfire.config.annotation.EnableContinuousQuerie
* @see org.apache.geode.cache.client.ClientCache
* @see org.springframework.boot.autoconfigure.EnableAutoConfiguration
* @see org.springframework.context.annotation.Bean
* @see org.springframework.context.annotation.Conditional
* @see org.springframework.context.annotation.Configuration
* @see org.springframework.data.gemfire.client.ClientCacheFactoryBean
* @see org.springframework.data.gemfire.config.annotation.ClientCacheConfigurer
* @see org.springframework.data.gemfire.config.annotation.EnableContinuousQueries
* @see org.springframework.geode.config.annotation.ClusterAvailableConfiguration.ClusterAvailableCondition
* @since 1.0.0
*/
@Configuration
@Conditional(ClusterAvailableConfiguration.ClusterAvailableCondition.class)
@ConditionalOnBean(ClientCacheFactoryBean.class)
@ConditionalOnMissingBean(name = "continuousQueryBeanPostProcessor",
type = "org.springframework.data.gemfire.listener.ContinuousQueryListenerContainer")

View File

@@ -16,6 +16,7 @@
package example.app.caching.lookaside.config;
import org.apache.geode.cache.client.ClientRegionShortcut;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.gemfire.config.annotation.EnableCachingDefinedRegions;
import org.springframework.data.gemfire.config.annotation.EnableLogging;

View File

@@ -32,8 +32,8 @@ import org.springframework.data.gemfire.config.annotation.EnableClusterConfigura
@Configuration
@Conditional(ClusterAvailableConfiguration.ClusterAvailableCondition.class)
@EnableClusterConfiguration(requireHttps = false, useHttp = true)
class ClusterAvailableConfiguration {
public class ClusterAvailableConfiguration {
static final class ClusterAvailableCondition extends ClusterAwareConfiguration.ClusterAwareCondition { }
public static final class ClusterAvailableCondition extends ClusterAwareConfiguration.ClusterAwareCondition { }
}

View File

@@ -97,7 +97,7 @@ public class ClusterNotAvailableConfiguration {
return clientRegion;
}
static final class CusterNotAvailableCondition extends ClusterAwareConfiguration.ClusterAwareCondition {
public static final class CusterNotAvailableCondition extends ClusterAwareConfiguration.ClusterAwareCondition {
@Override
public synchronized boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {