8 Kasım 2022 Salı

HazelcastAPI MapStoreConfig Sınıfı

Giriş
Şu satırı dahil ederiz
import com.hazelcast.config.MapStoreConfig;
Kullanılacak MapLoader veya MapStore sınıfını belirtir. DataConnectionConfig  ile birlikte kullanılır

setClassName metodu - Fully Qualified MapStore Class Name
Örnek - GenericMapStore + DataLinkConfig
Şöyle yaparız. MapStoreConfig sınıfına verilen string sabitler aynı zamanda GenericMapStore içinde de tanımlı
Config config = ...

MapStoreConfig mapStoreConfig = new MapStoreConfig()
  .setClassName(GenericMapStore.class.getName()) // Use GenericMapStore as MapStore
  .setProperty("data-connection-ref", "datastore") // DataConnection to use
  .setProperty("table-name", randomTableName); // Table name to read from
  .setProperty("type-name", "org.example.Person");

MapConfig mapConfig = new MapConfig(randomTableName)
  .setMapStoreConfig(mapStoreConfig);
config.addMapConfig(mapConfig);
Örnek - Custom MapLoader
Şöyle yaparız
var config = new Config();
...
config.addMapConfig(new MapConfig("*").setBackupCount(0).setAsyncBackupCount(0));
config.addMapConfig(new MapConfig("TestMap")
                .setMapStoreConfig(new MapStoreConfig()
                        .setClassName(MyLoader.class.getName())
                        .setWriteDelaySeconds(10)
                        .setWriteBatchSize(100)
                        .setWriteCoalescing(true)
                        .setInitialLoadMode(MapStoreConfig.InitialLoadMode.LAZY))
                .setEvictionConfig(new EvictionConfig()
                        .setEvictionPolicy(EvictionPolicy.LRU)
                        .setSize(500)
                        .setMaxSizePolicy(MaxSizePolicy.PER_NODE))
                .setMaxIdleSeconds(60)
                .setBackupCount(0).setAsyncBackupCount(0)
);
setEnabled metodu
Varsayılan değer true. O yüzden true ile çağırmaya gerek yok

setImplementation metodu - MapStore Nesnesi
Bir MapStore nesnesi alır. MapStore nesnesinin tüm metodlarını kodlamak istemiyorsak MapStoreAdapter sınıfından kalıtım yapılabilir

Örnek
Şöyle yaparız. Burada AccountMapLoader nesnesine bir tane Spring repository geçiliyor. Böylece MapLoader Spring'i kullanabilir.
@Bean
public Config config(AccountRepository accountRepository) {
  Config config = new ClasspathYamlConfig("hazelcast.yml");

  MapStoreConfig accountMapStoreConfig = new MapStoreConfig();
  accountMapStoreConfig.setInitialLoadMode(MapStoreConfig.InitialLoadMode.EAGER);
  accountMapStoreConfig.setEnabled(true);
  accountMapStoreConfig.setImplementation(new AccountMapLoader(accountRepository));
       
  MapConfig accountMapConfig = new MapConfig();
  accountMapConfig.setName("account");
  accountMapConfig.setMapStoreConfig(accountMapStoreConfig);
        
  config.getMapConfigs().put(accountMapConfig.getName(), accountMapConfig);
 
  return config;
}
setInitialLoadMode metodu
Normalde MapStore LAZY çalışır ve ilklenirken veri yüklemez. Bunu değiştirmek için kullanılır
Örnek
Şöyle yaparız
new MapStoreConfig()
  .setEnabled(true)
  .setInitialLoadMode(MapStoreConfig.InitialLoadMode.EAGER)
  .setImplementation(store);
setMaxIdleSeconds metodu

setWriteDelaySeconds metodu
Arka tarafta bu işi WriteBehindStore gerçekleştiriyor
Örnek
Şöyle yaparız
 mapStoreConfig.setWriteDelaySeconds(10);



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