Spring Boot Version - 1.5.2,
Gemfire版本 - 8.2.6(覆盖托管版本8.2.2),
RegionType - PARTITION_REDUNDANT,
代理 - ClientRegionShortcut.PROXY,
数据库 - Cassandra
我们正在扩展CacheWriterAdapter并覆盖beforeCreate(),beforeUpdate(),beforeDestroy()。我们使用JAVA连接到远程gemfire服务器。
@Bean(name = GemfireConstants.DEFAULT_GEMFIRE_CACHE_NAME)
ClientCache gemfireCache(@Qualifier("gemfireProperties") Properties gemfireProperties,
@Value("${gemfire.locator1:localhost}") String locatorHost,
@Value("${gemfire.port1:10334}") int locatorPort) {
ClientCache gemfireCache = new ClientCacheFactory(gemfireProperties).addPoolLocator(locatorHost, locatorPort)
.setPdxSerializer(pdxSerializer()).setPdxReadSerialized(false).create();
return gemfireCache;
}
但是每次调用beforeCreate()之前都要进行HTTP GET,PUT和POST。但是对于HTTP DELETE,调用beforeDestroy()。我们还尝试从com / gemstone / gemfire / cache / Operation打印布尔值,详细分析在底部。 我们想了解
情景-1 Gemfire - 没有记录
Cassandra - 记录可用
测试用例 - 使用现有数据调用HTTP GET服务,该数据在Cassandra中不在Gemfire中可用
结果 - 首先调用缓存加载器,然后调用CacheWriterAdapter的beforeCreate(),其操作为Local_LOAD_CREATE
getNewValue-提取对象
getOldValue- null
IsLoad真
IsLocalLoad真
IsLocal假
isGetEntry假
isSearchOrLoad真
isUpdate假
怡创真
isDestroy假
isGet假
isGetEntry假
isContainsKey假
isContainsValue假
isContainsValueForKey假
情景-2
Gemfire - 可录制
Cassandra - 记录可用
测试用例 - 使用Cassandra和Gemfire中可用的现有数据调用的HTTP GET服务
结果 - 调用CacheWriterAdapter的beforeCreate(),其操作为Local_LOAD_CREATE
getNewValue-提取对象
getOldValue- null
IsLoad - 真
IsLocalLoad真
IsLocal假
isGetEntry假
isSearchOrLoad真
isUpdate假
怡创真
isDestroy假
isGet假
isGetEntry假
isContainsKey假
isContainsValue假
isContainsValueForKey假
情景-3
Gemfire - 没有可用记录
Cassandra - 没有可用的记录
测试用例 - 使用Cassandra和Gemfire中不存在的新数据集调用HTTP PostOperation
结果 - 调用CacheWriterAdapter的beforeCreate(),其操作为CREATE
getNewValue-提取对象
getOldValue- null
IsLoad - 假
IsLocalLoad假
IsLocal假
isGetEntry假
isNetLoad假
isSearchOrLoad假
isUpdate假
怡创真
isDestroy假
isGet假
isGetEntry假
isContainsKey假
isContainsValue假
isContainsValueForKey假
isInvalidate假
情景-4
Gemfire - 可录制
Cassandra - 记录可用
应用程序 - 使用Cassandra和Gemfire中提供的现有数据调用HTTP PutOperation
结果 - 调用CacheWriterAdapter的beforeCreate(),其操作为CREATE
getNewValue-提取对象
getOldValue- null
IsLoad - 假
IsLocalLoad假
IsLocal假
isGetEntry假
isNetLoad假
isSearchOrLoad假
isUpdate假
怡创真
isDestroy假
isGet假
isGetEntry假
isContainsKey假
isContainsValue假
isContainsValueForKey假
isInvalidate假
情景-5
Gemfire - 可录制
Cassandra - 记录可用
应用程序 - 使用Cassandra和Gemfire中提供的现有IMEI调用HTTP DeleteOperation
结果 - 调用CacheWriterAdapter的beforeDestroy(),操作为DESTROY。
getNewValue-提取对象
getOldValue- null
IsLoad - 假
IsLocalLoad假
IsLocal假
isGetEntry假
isNetLoad假
isSearchOrLoad假
isUpdate假
怡创假
isDestroy真
isGet假
isGetEntry假
isContainsKey假
isContainsValue假
isContainsValueForKey假
isInvalidate假
这是正确的行为吗?