GemFire - Spring Boot配置

时间:2017-01-13 06:37:24

标签: spring-boot spring-data-gemfire

我正在开发一个需要Pivotal GemFire的项目。 我无法找到有关如何使用Spring Boot配置gemFire的正确教程。

我创建了一个分区区域,我也想配置Locators,但我只需要服务器端配置,因为客户端是由其他人处理的。

我对Pivotal GemFire全新,真的很困惑。我尝试过创建cache.xml,但不知何故创建cache.out.xml并且存在很多问题。

2 个答案:

答案 0 :(得分:1)

@Priyanka -

最好的起点是spring.io上的指南。具体来说,看看......

Accessing Data with GemFire

还有......

Cache Data with GemFire”,以及......

Accessing GemFire Data with REST

但是,这些指南主要关注“客户端”应用程序问题,“数据访问”(通过REST),“缓存”等。

但是,您仍然可以使用 Spring Data GemFire (在 Spring Boot 应用程序中)来配置GemFire服务器。我有很多例子。特别是......

Spring Boot GemFire Server Example

此示例演示如何将 Spring Boot 应用程序引导为GemFire服务器(从技术上讲,是集群中的对等节点)。此外,GemFire属性指定为 Spring 配置,并且可以使用 Spring的常规约定(属性占位符,SpEL表达式)来配置这些属性,如此...

https://github.com/jxblum/spring-boot-gemfire-server-example/blob/master/src/main/java/org/example/SpringBootGemFireServer.java#L59-L84

这种特殊配置使GemFire服务器成为“GemFire管理器”,可能带有嵌入式“定位器”(由start-locator GemFie属性表示,不要与允许我们的节点的“定位器”GemFire属性混淆加入和“现有”群集)以及GemFire CacheServer来提供GemFire缓存客户端(ClientCache)。

此示例创建"Factorials" Region,其中CacheLoader(定义{{​​3}})在缓存未命中时填充“Factorials”区域。

由于此示例在 Spring Boot GemFire Server应用程序进程中启动了嵌入式GemFire Manager,您甚至可以使用 Gfsh 连接到它,就像这样...

gfsh> connect --jmx-manager=localhost[1099]

然后你可以在“Factorial”区域运行“gets”来查看你给它的数字键的计算因子。

要查看更多高级配置,请查看我的其他回购,特别是通讯录应用 RI(here)。

希望这有帮助!

-John

答案 1 :(得分:0)

嗯,我遇到了同样的问题,让我与大家分享一下对我有用的东西,在这种情况下,我使用Spring Boot和Pivotal GemFire作为缓存客户端。

  1. Install并运行GemFire
  2. 阅读15 minutes quick start guide
  3. 创建一个定位器(我们称之为locator1)和一台服务器(server1)和一个区域(region1
  4. 转到启动' Gee Fish '(gfsh)的文件夹,然后转到定位器的文件夹并打开日志文件,在该文件中即可获得< em> port 您的定位器正在使用。
  5. 现在让我们看一下Spring引导端:

    1. 在使用main方法的应用程序中添加@EnablegemFireCaching注释
    2. 在要缓存的方法(无论在哪里)中,添加@Cacheable("region1")注释。
    3. 现在让我们为缓存创建一个配置文件

      //这是我的工人阶级

      @Configuration 公共类CacheConfiguration {

      @Bean
      ClientCacheFactoryBean gemfireCacheClient() {
          return new ClientCacheFactoryBean();
      }
      
      @Bean(name = GemfireConstants.DEFAULT_GEMFIRE_POOL_NAME)
      PoolFactoryBean gemfirePool() {
      
          PoolFactoryBean gemfirePool = new PoolFactoryBean();
      
          gemfirePool.addLocators(Collections.singletonList(new ConnectionEndpoint("localhost", HERE_GOES_THE_PORT_NUMBER_FROM_STEP_4)));
          gemfirePool.setName(GemfireConstants.DEFAULT_GEMFIRE_POOL_NAME);
          gemfirePool.setKeepAlive(false);
          gemfirePool.setPingInterval(TimeUnit.SECONDS.toMillis(5));
          gemfirePool.setRetryAttempts(1);
          gemfirePool.setSubscriptionEnabled(true);
          gemfirePool.setThreadLocalConnections(false);
      
          return gemfirePool;
      }
      
      @Bean
      ClientRegionFactoryBean<Long, Long> getRegion(ClientCache gemfireCache, Pool gemfirePool) {
          ClientRegionFactoryBean<Long, Long> region = new ClientRegionFactoryBean<>();
          region.setName("region1");
          region.setLookupEnabled(true);
          region.setCache(gemfireCache);
          region.setPool(gemfirePool);
          region.setShortcut(ClientRegionShortcut.PROXY);
      
          return region;
      }
      

      这就是全部!,也不要忘记序列化(implements Serializable)正在缓存类(缓存方法正在返回的类)