This topic explains how to manage a client cache in VMware Tanzu GemFire.
Several options exist for client cache configuration. Start your client cache using a combination of XML declarations and API calls. Close the client cache when you are done.
Tanzu GemFire clients are processes that send most or all of their data requests and updates to a Tanzu GemFire server system. Clients run as standalone processes, without peers of their own.
Note: Tanzu GemFire automatically configures the cluster for your ClientCache
as standalone, which means the client has no peers. Do not try to set the gemfire.properties
locators
for a client application or the system will throw an exception.
Create your client cache:
In your cache.xml
, use the client-cache
DOCTYPE and configure your cache inside a <client-cache>
element. Configure your server connection pool and your regions as needed. Example:
<?xml version="1.0" encoding="UTF-8"?>
<client-cache
xmlns="http://geode.apache.org/schema/cache"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://geode.apache.org/schema/cache http://geode.apache.org/schema/cache/cache-1.0.xsd"
version="1.0">
<pool name="serverPool">
<locator host="host1" port="44444"/>
</pool>
<region name="exampleRegion" refid="PROXY"/>
</client-cache>
Note: Applications that use a client-cache
may want to set concurrency-checks-enabled
to false for a region in order to see all events for that region. Tanzu GemFire server members can continue using concurrency checks, but they will pass all events to the client cache. This configuration ensures that the client sees all region events, but it does not prevent the client cache region from becoming unsynchronized with the server cache. See Consistency for Region Updates.
If you use multiple server pools, configure the pool name explicitly for each client region. Example:
<pool name="svrPool1">
<locator host="host1" port="40404"/>
</pool>
<pool name="svrPool2">
<locator host="host2" port="40404"/>
</pool>
<region name="clientR1" refid="PROXY" pool-name="svrPool1"/>
<region name="clientR2" refid="PROXY" pool-name="svrPool2"/>
<region name="clientsPrivateR" refid="LOCAL"/>
In your Java client application, create the cache using the ClientCacheFactory
create
method. Example:
ClientCache clientCache = new ClientCacheFactory().create();
This creates the server connections and initializes the client’s cache according to your gemfire.properties
and cache.xml
specifications.
Close your cache when you are done using the close
method of your Cache
instance:
cache.close();
If your client is durable and you want to maintain your durable queues while the client cache is closed, use:
clientCache.close(true);