8 Haziran 2023 Perşembe

HazelcastSpringBoot Cache Kullanımı

Maven
Şu satırı dahil ederiz
<dependency>
  <groupId>com.hazelcast</groupId>
  <artifactId>hazelcast-spring</artifactId>
  <version>5.0.1</version>
</dependency>
hazelcast-spring Projesine Dair Notlar
XML dosyasında geçen tag'leri hangi sınıfın bileşenlerine ayıraca HazelcastNamespaceHandler dosyasında tanımlı.

Konfigürasyon
1. hazelcast.xml veya hazelcast.yaml Dosyası kullanılır
spring-boot-autoconfigure projesinde iki tane auto configuration için bean var. Bunlar

- Server sınıfı hazelcast.xml veya hazelcast.yaml dosyası varsa etkindir.  ConfigAvailableCondition sınıfında görülebilir

Client sınıfı hazelcast-client.xml, hazelcast-client.yml dosyası varsa etkindir. HazelcastClientConfigAvailableCondition sınıfında görülebilir

1.1 ClassPath'e Eklenir
Açıklaması şöyle
Add a hazelcast.xml file to the src/main/resources folder and spring boot will auto configure hazelcast for you. 
1.2 Dosya Yolu Belirtilir
Açıklaması şöyle
You can optionally configure the location of the hazelcast.xml file in your properties or YAML file using spring.hazelcast.config
Örnek
Şöyle yaparız
# application.yml
spring:
  hazelcast:
    config: classpath:config/hazelcast.xml

# application.properties
spring.hazelcast.config=classpath:config/hazelcast.xml

2. Kodla Konfigürasyon

1. Config Nesnesi
Bir tane Config nesnesi yaratılır. Bu nesne isteğe bağlı olarak bean yapılır

Örnek - Bir Cluster Oluşturmak
Şöyle yaparız
@Bean
public Config hazelcastConfig() {
  Config config = new Config();
  NetworkConfig networkConfig = config.getNetworkConfig();
  JoinConfig joinConfig = networkConfig.getJoin();

  joinConfig.getMulticastConfig().setEnabled(false);
  joinConfig.getTcpIpConfig().setEnabled(true)
    .setMembers(Arrays.asList("127.0.0.1"));

  config.addExecutorConfig(new ExecutorConfig("distributed-scheduler")
    .setPoolSize(10)
    .setQueueCapacity(1_000));
  return config;
}
Örnek
Şöyle yaparız
@Configuration
public class HazelcastConfiguration {

  @Bean
  public Config hazelCastConfig(){
    return new Config()
      .setInstanceName("hazelcast-instance")
      .addMapConfig(
        new MapConfig()
          .setName("instruments")
          .setMaxSizeConfig(
            new MaxSizeConfig(200,MaxSizeConfig.MaxSizePolicy.FREE_HEAP_SIZE))
          .setEvictionPolicy(EvictionPolicy.LRU)
          .setTimeToLiveSeconds(20));
  }
}

2. HazelcastInstance Nesnesi
Bu nesne bean yapılır. Bundan sonra HazelcastInstance nesnesi @Autowire ile kullanılabilir
Örnek
Şöyle yaparız
@Bean
public HazelcastInstance hazelcastInstance() {
  ClientConfig config = new ClientConfig();
  config.setClusterName("dev");
  return HazelcastClient.newHazelcastClient(config);
}
Örnek
Şöyle yaparız
@Service
public class MyService {
  @Autowired
  private HazelcastInstance instance;
  ...
}
3. HazelcastCacheManager 
Şu satırı dahil ederiz
import com.hazelcast.spring.cache.HazelcastCacheManager;
Bu nesneyi yarattıktan sonra SpringBoot ile gelen @Cacheable, @CachePut, @CacheEvict anotasyonları kullanılabilir.

Kalıtım şöyle
org.springframework.cache.CacheManager
  HazelcastCacheManager

Örnek
Şöyle yaparız. Burada org.springframework.cache.annotation.CachingConfigurerSupport kullanılıyor. Bir tane org.springframework.cache.CacheManager yaratılıyor
@Configuration
@EnableCaching
public class CacheConfig extends CachingConfigurerSupport {

  @Autowired
  private HazelcastInstance hazelcastInstance;

  @Override
  public CacheManager cacheManager() {
    return new HazelcastCacheManager(hazelcastInstance);
  }
}





Hiç yorum yok:

Yorum Gönder

THIRD-PARTY.txt Dosyası

Kullanılan harici kütüphanelerin sürümleri bu dosyada Dosyanın yolu şöyle hazelcast/licenses/THIRD-PARTY.txt