Add documentation on the @EnableClusterAware annotation, strictMatch attribute.
This commit is contained in:
@@ -154,7 +154,8 @@ class SpringBootApacheGeodeClientCacheApplication { }
|
|||||||
----
|
----
|
||||||
|
|
||||||
Your Spring Boot, {geode-name} `ClientCache` application is able to seamlessly switch between client/server
|
Your Spring Boot, {geode-name} `ClientCache` application is able to seamlessly switch between client/server
|
||||||
and local-only topologies with no code or configuration changes.
|
and local-only topologies with no code or configuration changes, regardless of the runtime environment
|
||||||
|
(e.g. local/standalone vs. cloud-managed environments).
|
||||||
|
|
||||||
When a cluster of {geode-name} servers is detected, the client application will send and receive data to and from the
|
When a cluster of {geode-name} servers is detected, the client application will send and receive data to and from the
|
||||||
cluster. If a cluster is not available, then the client automatically switches to storing data locally on the client
|
cluster. If a cluster is not available, then the client automatically switches to storing data locally on the client
|
||||||
@@ -166,7 +167,7 @@ Additionally, the `@EnableClusterAware` annotation is meta-annotated with SDG's
|
|||||||
The `@EnableClusterConfiguration` enables configuration metadata defined on the client (e.g. Region and Index
|
The `@EnableClusterConfiguration` enables configuration metadata defined on the client (e.g. Region and Index
|
||||||
definitions) as needed by the application based on requirements and use cases, to be sent to the cluster of servers.
|
definitions) as needed by the application based on requirements and use cases, to be sent to the cluster of servers.
|
||||||
If those schema objects are not already present, they will be created by the servers in the cluster in such a way that
|
If those schema objects are not already present, they will be created by the servers in the cluster in such a way that
|
||||||
the servers will remember the configuration on a restart as well as provide the configuration to new servers joining
|
the servers will remember the configuration on restart as well as provide the configuration to new servers joining
|
||||||
the cluster when scaling out. This feature is careful not to stomp on any existing Region or Index objects already
|
the cluster when scaling out. This feature is careful not to stomp on any existing Region or Index objects already
|
||||||
present on the servers, particularly since you may already have data stored in the Regions.
|
present on the servers, particularly since you may already have data stored in the Regions.
|
||||||
|
|
||||||
@@ -181,6 +182,66 @@ TIP: Refer to the section in the SDG Reference Guide on
|
|||||||
{spring-data-geode-docs-html}/#bootstrap-annotation-config-cluster[Configuring Cluster Configuration Push]
|
{spring-data-geode-docs-html}/#bootstrap-annotation-config-cluster[Configuring Cluster Configuration Push]
|
||||||
for more details.
|
for more details.
|
||||||
|
|
||||||
|
[[geode-configuration-declarative-annotations-productivity-enableclusteraware-strictmatch]]
|
||||||
|
===== @EnableClusterAware, strictMatch
|
||||||
|
|
||||||
|
The `strictMatch` attribute has been added to the `@EnableClusterAware` annotation to enable _fail-fast_ behavior.
|
||||||
|
`strictMatch` is set to `false` by default.
|
||||||
|
|
||||||
|
Essentially, when you set `strictMatch` to `true`, then you are saying that your Spring Boot, {geode-name} `ClientCache`
|
||||||
|
application requires an {geode-name} cluster to exist, i.e. the application requires a client/server topology
|
||||||
|
to operate and that the application should fail to start and run if a cluster is not present. The application
|
||||||
|
should not startup in a LOCAL-only capacity.
|
||||||
|
|
||||||
|
When `strictMatch` is set to `true` and an {geode-name} cluster is not present, then your Spring Boot, {geode-name}
|
||||||
|
`ClientCache` application will fail to start with a `ClusterNotFoundException`. The application will not attempt to
|
||||||
|
startup in a LOCAL-only capacity.
|
||||||
|
|
||||||
|
You can explicitly set the `strictMatch` attribute programmatically using the `@EnableClusterAware` annotation:
|
||||||
|
|
||||||
|
.Set `@EnableClusterAware.strictMatch`
|
||||||
|
[source,java]
|
||||||
|
----
|
||||||
|
@SpringBootApplication
|
||||||
|
@EnableClusterAware(strictMatch = true)
|
||||||
|
class SpringBootApacheGeodeClientCacheApplication { }
|
||||||
|
----
|
||||||
|
|
||||||
|
Alternatively, you can set `strictMatch` using the corresponding property in Spring Boot `application.properties`:
|
||||||
|
|
||||||
|
.Set `strictMatch` using a property
|
||||||
|
[source,properties]
|
||||||
|
----
|
||||||
|
# Spring Boot application.properties
|
||||||
|
|
||||||
|
spring.boot.data.gemfire.cluster.condition.match.strict=true
|
||||||
|
----
|
||||||
|
|
||||||
|
This is convenient when you need to apply this configuration setting conditionally based on a Spring Profile.
|
||||||
|
|
||||||
|
When you adjust the _log-level_ of the `org.springframework.geode.config.annotation.ClusterAwareConfiguration` _Logger_
|
||||||
|
to `INFO`, then you will get more details from the `@EnableClusterAware` functionality when applying the logic
|
||||||
|
to determine the presence of an {geode-name} cluster, such as which explicitly or implicitly configured connections
|
||||||
|
were successful.
|
||||||
|
|
||||||
|
For example:
|
||||||
|
|
||||||
|
.`@EnableClusterAware` INFO log output
|
||||||
|
[source,txt]
|
||||||
|
----
|
||||||
|
2021-01-20 14:02:28,740 INFO fig.annotation.ClusterAwareConfiguration: 476 - Failed to connect to localhost[40404]
|
||||||
|
2021-01-20 14:02:28,745 INFO fig.annotation.ClusterAwareConfiguration: 476 - Failed to connect to localhost[10334]
|
||||||
|
2021-01-20 14:02:28,746 INFO fig.annotation.ClusterAwareConfiguration: 470 - Successfully connected to localhost[57649]
|
||||||
|
2021-01-20 14:02:28,746 INFO fig.annotation.ClusterAwareConfiguration: 576 - Cluster was found; Auto-configuration made [1] successful connection(s);
|
||||||
|
2021-01-20 14:02:28,746 INFO fig.annotation.ClusterAwareConfiguration: 586 - Spring Boot application is running in a client/server topology, using a standalone Apache Geode-based cluster
|
||||||
|
----
|
||||||
|
|
||||||
|
NOTE: An attempt is always made to connect to `localhost` on the default _Locator_ port, `10334`,
|
||||||
|
as well as the default `CacheServer` port, `40404`.
|
||||||
|
|
||||||
|
TIP: You can force a successful match always by setting the `spring.boot.data.gemfire.cluster.condition.match` property
|
||||||
|
to `true` in Spring Boot `application.properties`. This is sometimes useful for testing purposes.
|
||||||
|
|
||||||
[[geode-configuration-declarative-annotations-productivity-regions]]
|
[[geode-configuration-declarative-annotations-productivity-regions]]
|
||||||
==== `@EnableCachingDefinedRegions`, `@EnableClusterDefinedRegions` & `@EnableEntityDefinedRegions` (SDG)
|
==== `@EnableCachingDefinedRegions`, `@EnableClusterDefinedRegions` & `@EnableEntityDefinedRegions` (SDG)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user