Maven
Şu satırı dahil ederiz
<dependency> <groupId>com.hazelcast</groupId> <artifactId>hazelcast-spring</artifactId> <version>5.0.1</version> </dependency>
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
@Beanpublic 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