31 Mayıs 2023 Çarşamba

HazelcastAPI QueueStore Arayüzü

Giriş
Şu satırı dahil ederiz
import com.hazelcast.collection.QueueStore;
Bu sınıfı QueueStoreWrapper çağırır

Örnek - SpringBoot Kullanan
Şöyle yaparız
@Component
public class PostgresQueueStore implements QueueStore<Event> {

  EventRepository eventRepository;

  public PostgresQueueStore(@Lazy EventRepository eventRepository) {
    this.eventRepository = eventRepository;
  }

  @Override
  public void store(Long key, Event value) {
    EventEntity entity = ...;
    eventRepository.save(entity);
  }

  @Override
  public void storeAll(Map<Long, Event> map) {
    Collection<EventEntity> eventEntities = map.entrySet().stream()
      .map(entry -> ...)
      .toList();
      eventRepository.saveAll(eventEntities);
  }

  @Override
  public void delete(Long key) {
    eventRepository.deleteById(key);
  }

  @Override
  public void deleteAll(Collection<Long> keys) {
    eventRepository.deleteAllById(keys);
  }

  @Override
  public Event load(Long key) {
    return eventRepository.findById(key)
      .map(e -> ...)
      .orElse(null);
  }

  @Override
  public Map<Long, Event> loadAll(Collection<Long> keys) {
    List<EventEntity> entities = eventRepository.findAllById(keys);
    return entities.stream().collect(Collectors.toMap(EventEntity::getId,
                e -> ...);
  }

  @Override
  public Set<Long> loadAllKeys() {
    List<EventEntity> events = eventRepository.findAll();
    return events.stream().map(EventEntity::getId).collect(Collectors.toSet());
  }
}


HazelcastAPI QueueStoreConfig Sınıfı

Giriş
Şu satırı dahil ederiz
import com.hazelcast.config.QueueStoreConfig;
setStoreImplementation metodu
QueueStore nesnesi atar

Örnek
Şöyle yaparız
QueueStore<Foo> queueStore = ...

QueueConfig queueConfig =...
queueConfig.setQueueStoreConfig(new QueueStoreConfig()
  .setEnabled(true)
  .setStoreImplementation(queueStore)
  .setProperty("binary", "false")
);

25 Mayıs 2023 Perşembe

HazelcastAPI MigrationListener Arayüzü

Giriş
Şu satırı dahil ederiz
import com.hazelcast.partition.MigrationListener;
Kod şöyle. Yani java.util.EventListener arayüzünden kalıtır
public interface MigrationListener extends EventListener {...}
Açıklaması şöyle
it only triggers when a node joins or leaves "gracefully", it doesn't trigger when a node leaves "ungracefully".
migrationStarted metodu
Açıklama yaz

migrationFinished metodu
Açıklama yaz

replicaMigrationCompleted metodu
Açıklama yaz

replicaMigrationFailed metodu
Açıklama yaz

Hazelcast Projesi .github Dizini

CODEOWNERS Dosyası
Dosya şöyle

dependabot.yml
dependabot ayalarını içerir

.github/scripts/publish-rhel.sh Dosyası
Redhat deposuna Docker image yayınlar


HazelcastAPI Data Arayüzü

Giriş
Şu satırı dahil ederiz
import com.hazelcast.internal.serialization.Data;
Kalıtım şöyle
Data
  HeapData
    Packet

SerializationService tarafından nesne Data arayüzüne çevrilir

getType() metodu
SerializationConstants sınıfındaki sabitlerden birisini döner


24 Mayıs 2023 Çarşamba

HazelcastAPI MapProxySupport Sınıfı

Giriş
Şu satırı dahil ederiz
import com.hazelcast.map.impl.proxy.MapProxySupport;
constructor
protected MapProxySupport(String name, MapService service, NodeEngine nodeEngine, 
  MapConfig mapConfig) {
  super(nodeEngine, service);
  this.name = name;

  HazelcastProperties properties = nodeEngine.getProperties();

  this.mapServiceContext = service.getMapServiceContext();
  this.mapConfig = mapConfig;
  this.partitionStrategy = mapServiceContext.getPartitioningStrategy(mapConfig.getName(),
    mapConfig.getPartitioningStrategyConfig(), mapConfig.getPartitioningAttributeConfigs());
  this.localMapStats = mapServiceContext.getLocalMapStatsProvider()
    .getLocalMapStatsImpl(name);
  this.partitionService = getNodeEngine().getPartitionService();
  this.lockSupport = new LockProxySupport(MapService.getObjectNamespace(name),
    LockSupportServiceImpl.getMaxLeaseTimeInMillis(properties));
  this.operationProvider = mapServiceContext.getMapOperationProvider(name);
  this.operationService = nodeEngine.getOperationService();
  this.serializationService = nodeEngine.getSerializationService();
  this.thisAddress = nodeEngine.getClusterService().getThisAddress();
  this.statisticsEnabled = mapConfig.isStatisticsEnabled();

  this.putAllBatchSize = properties.getInteger(MAP_PUT_ALL_BATCH_SIZE);
  this.putAllInitialSizeFactor = properties.getFloat(MAP_PUT_ALL_INITIAL_SIZE_FACTOR);
  default value the same as in OperationService
  this.failOnIndeterminateOperationState = properties
    .getBoolean(FAIL_ON_INDETERMINATE_OPERATION_STATE);
}
İçinde bir çeşit operationProvider isminde MapOperationProvider nesnesi barındırır. Bu MapOperationProvider  şeklen şöyle kullanılır. Yani MapProxyImpl ne iş yapacaksa MapOperationProvider sınıfından bir operation nesnesi alır ve onu çalıştırır





hazelcast.xml - IExecutorService Ayarları

Örnek
Şöyle yaparız
hazelcast:
network: join: multicast: enabled: true executor-service: exec: pool-size: 32 queue-capacity: 200 statistics-enabled: true

THIRD-PARTY.txt Dosyası

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