Este contenido no está disponible en el idioma seleccionado.

Chapter 2. Using Remote Caches


Store and retrieve data from remote Data Grid clusters using Hot Rod, a custom TCP binary wire protocol.

2.1. Setting Up the RemoteCacheManager

Configure your application to use remote caches on Data Grid clusters.

  1. Provide the addresses where Data Grid Server listens for client connections so the starter can create the RemoteCacheManager bean.
  2. Use the Spring @Autowired annotation to include your own custom Cache Manager class in your application:

    private final RemoteCacheManager cacheManager;
    
    @Autowired
    public YourClassName(RemoteCacheManager cacheManager) {
        this.cacheManager = cacheManager;
    }

2.2. Using the reactive mode with Reactor

Starting with Spring 6.1, reactive mode is supported to make use of caching within reactive applications. If you use spring-boot-starter-webflux, your application may block.

To enable the Data Grid reactive driver, specify the following property in application.properties:

infinispan.remote.reactive=true

2.2.1. Properties Files

You can specify properties in either hotrod-client.properties or application.properties.

Properties can be in both properties files but the starter applies the configuration in hotrod-client.properties first, which means that file takes priority over application.properties.

hotrod-client.properties

Properties in this file take the format of infinispan.client.hotrod.*, for example:

# List Data Grid servers by IP address or hostname at port localhost:11222.
infinispan.client.hotrod.server_list=127.0.0.1:11222
application.properties

Properties in this file take the format of infinispan.remote.*, for example:

# List Data Grid servers by IP address or hostname at port localhost:11222.
infinispan.remote.server-list=127.0.0.1:11222

Additional resources

2.3. Configuring Marshalling

Configure Data Grid to marshall Java objects into binary format so they can be transferred over the wire or stored to disk.

By default Data Grid uses a Java Serialization marshaller, which requires you to add your classes to an allow list. As an alternative you can use ProtoStream, which requires you to annotate your classes and generate a SerializationContextInitializer for custom Java objects.

Procedure

  1. Open hotrod-client.properties or application.properties for editing.
  2. Do one of the following:

    • Use ProtoStream as the marshaller.

      infinispan.client.hotrod.marshaller=org.infinispan.commons.marshall.ProtoStreamMarshaller
      infinispan.remote.marshaller=org.infinispan.commons.marshall.ProtoStreamMarshaller
    • Add your classes to the serialization allow list if you use Java Serialization. You can specify a comma-separated list of fully qualified class names or a regular expression to match classes.

      infinispan.client.hotrod.java_serial_allowlist=your_marshalled_beans_package.*
      infinispan.remote.java-serial-allowlist=your_marshalled_beans_package.*
  3. Save and close your properties file.

Additional resources

2.4. Cache Manager Configuration Beans

Customize the Cache Manager with the following configuration beans:

  • InfinispanRemoteConfigurer
  • Configuration
  • InfinispanRemoteCacheCustomizer
Note

You can create one InfinispanRemoteConfigurer bean only. However you can create multiple configurations with the other beans.

InfinispanRemoteConfigurer Bean

@Bean
public InfinispanRemoteConfigurer infinispanRemoteConfigurer() {
    return () -> new ConfigurationBuilder()
        .addServer()
        .host("127.0.0.1")
        .port(12345)
        .build();
}

Configuration Bean

@Bean
public org.infinispan.client.hotrod.configuration.Configuration customConfiguration() {
    new ConfigurationBuilder()
        .addServer()
        .host("127.0.0.1")
        .port(12345)
        .build();
}

InfinispanRemoteCacheCustomizer Bean

@Bean
public InfinispanRemoteCacheCustomizer customizer() {
    return b -> b.tcpKeepAlive(false);
}

Tip

Use the @Ordered annotation to apply customizers in a specific order.

2.5. Enabling Spring Cache Support

With both embedded and remote caches, Data Grid provides an implementation of Spring Cache that you can enable.

Procedure

  • Add the @EnableCaching annotation to your application.

If the Data Grid starter detects the:

  • EmbeddedCacheManager bean, it instantiates a new SpringEmbeddedCacheManager.
  • RemoteCacheManager bean, it instantiates a new SpringRemoteCacheManager.

2.6. Exposing Data Grid Statistics

Data Grid supports the Spring Boot Actuator to expose cache statistics as metrics.

Procedure

  1. Add the following to your pom.xml file:

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-actuator</artifactId>
      <version>${version.spring.boot}</version>
     </dependency>
    
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
      <version>${version.spring.boot}</version>
    </dependency>
  2. Activate statistics for the appropriate cache instances, either programmatically or declaratively.

    Programmatically

    @Bean
    public InfinispanCacheConfigurer cacheConfigurer() {
      return cacheManager -> {
         final org.infinispan.configuration.cache.Configuration config =
               new ConfigurationBuilder()
                     .jmxStatistics().enable()
                     .build();
    
         cacheManager.defineConfiguration("my-cache", config);
      };
    }

    Declaratively

    <local-cache statistics="true"/>

The Spring Boot Actuator registry binds cache instances when your application starts.

If you create caches dynamically, you should use the CacheMetricsRegistrar bean to bind caches to the Actuator registry, as follows:

@Autowire
CacheMetricsRegistrar cacheMetricsRegistrar;

@Autowire
CacheManager cacheManager;
...

cacheMetricsRegistrar.bindCacheToRegistry(cacheManager.getCache("my-cache"));
Red Hat logoGithubRedditYoutubeTwitter

Aprender

Pruebe, compre y venda

Comunidades

Acerca de la documentación de Red Hat

Ayudamos a los usuarios de Red Hat a innovar y alcanzar sus objetivos con nuestros productos y servicios con contenido en el que pueden confiar.

Hacer que el código abierto sea más inclusivo

Red Hat se compromete a reemplazar el lenguaje problemático en nuestro código, documentación y propiedades web. Para más detalles, consulte el Blog de Red Hat.

Acerca de Red Hat

Ofrecemos soluciones reforzadas que facilitan a las empresas trabajar en plataformas y entornos, desde el centro de datos central hasta el perímetro de la red.

© 2024 Red Hat, Inc.