首页 > 解决方案 > 使用 PCF Tanzu Gemfire 服务 Springboot 微服务使用 Gemfire 缓存时面临的问题

问题描述

我正在开发 Springboot REST 微服务。在分区区域类型上执行清除区域时面临问题。如何配置 Gemfire 缓存,以便我的客户端应该能够在启动时向服务器添加区域。此外,我正在考虑公开一个 API 以显式地驱逐缓存。有没有办法我们可以做到?我们现在实现了 Redis 缓存,但我们想切换到 gemfire,因为它提供了很好的 GUI 来使用 PULSE 跟踪区域和数据。问题:

  1. 用于在启动时添加区域以跨微服务使用的 Gemfire 客户端配置。
  2. 如何明确驱逐。考虑一个 API。

代码:

@SpringBootApplication
@EnableCacheDefinedRegions
public class CloudcachePizzaStoreApplication

标签: spring-bootgemfire

解决方案


问题(如GEODE-788GEODE-7665GEODE-7666GEODE-7670GEODE-7672GEODE-7676中所述)是 GemFire/Geode 不支持Region.clear()区域PARTITION 尚)。

例如,当您@CacheEvent(allEntries = true)在托管应用程序组件上声明注释/属性时...

@Component
class MyCacheableSpringManagedApplicationComponent {

  @CacheEvict(allEntries = true)
  void nukeAndPave() {
      repository.deleteAll();
      // ...
  }
}

这实际上是调用Region.clear()(参见此处)。考虑到大量 GemFire/Geode 问题,此行为适用于REPLICATELOCAL Regions,但不适用于PARTITION Regions 。不过,它目前是一个 WIP。

Spring Data 中有(部分地,仍然是)意图让 Apache Geode 和 VMware Tanzu (Pivotal) GemFire 处理缓存清除操作。

https://jira.spring.io/browse/DATAGEODE-265

但是,在上述 GEODE ​​JIRA 票得到整理之前,这将被搁置。


推荐阅读