13 Şubat 2023 Pazartesi

HazelcastAPI Logger Sınıfı

Giriş
Şu satırı dahil ederiz
import com.hazelcast.logging.ILogger;
import com.hazelcast.logging.Logger;
Açıklaması şöyle

Kullanım
Şöyle yaparız
private final ILogger logger = Logger.getLogger(Foo.class);
createLoggerFactory metodu
Kalıtım şöyle
LoggerFactory
  Log4jFactory
  LoggerFactorySupport
  NoLogFactory
  StandardLoggerFactory

StandardLoggerFactory Sınıfı
Eğer herhangi bir logger yöntemi tanımlı değilse StandardLoggerFactory nesnesi kullanılır. Bu sınıf ta bir StandardLogger yaratır. StandardLogger da JUL kullanarak loglama yapar

Kod şöyle
@Override
protected ILogger createLogger(String name) {
  final Logger l = java.util.logging.Logger.getLogger(name);
  return new StandardLogger(l);
}


10 Şubat 2023 Cuma

Hazelcast Jet JobProxy Sınıfı

Giriş
Şu satırı dahil ederiz
import com.hazelcast.jet.impl.JobProxy;
invokeOp metodu
Kodu şöyle. İşi her zaman Job Coordinator member'a gönderir.
private <T> CompletableFuture<T> invokeOp(Operation op) {
  return container()
    .getOperationService()
    .createInvocationBuilder(JetServiceBackend.SERVICE_NAME, op, coordinatorId())
    .invoke();
}

9 Şubat 2023 Perşembe

HazelcastAPI ClientEngine Arayüzü - Member Üzerindeki Client Threadleri Yönetir

Giriş
Şu satırı dahil ederiz
import com.hazelcast.client.impl.ClientEngine;
Kalıtım şöyle
ClientEngine
  ClientEngineImpl
  NoOpClientEngine

Açıklaması şöyle
The ClientMessage class is the main message format used for communication between the client and members. This class encapsulates the message data and provides methods for encoding and decoding the data for transmission over the network.

The ClientConnection class is responsible for managing the TCP socket connection between the client and a member. It handles sending and receiving messages, as well as managing the connection lifecycle (e.g. connecting, disconnecting, etc.).

The ClientEngineImpl class is responsible for managing the overall client infrastructure, including maintaining a registry of connected clients and managing the communication between clients and members.

ClientEngineImpl Sınıfı
Şu satırı dahil ederiz
import com.hazelcast.client.impl.ClientEngineImpl;
accept metodu
Kodu şöyle
public void accept(ClientMessage clientMessage) {
  Connection connection = clientMessage.getConnection();
  MessageTask messageTask = messageTaskFactory.create(clientMessage, connection);
  OperationServiceImpl operationService = nodeEngine.getOperationService();
  if (isUrgent(messageTask)) {
    operationService.execute((UrgentMessageTask) messageTask);
  } else if (messageTask instanceof AbstractPartitionMessageTask) {
    operationService.execute((AbstractPartitionMessageTask) messageTask);
  } else if (isQuery(messageTask)) {
    queryExecutor.execute(messageTask);
  } else if (messageTask instanceof TransactionalMessageTask) {
    blockingExecutor.execute(messageTask);
  } else if (messageTask instanceof BlockingMessageTask) {
    blockingExecutor.execute(messageTask);
  } else {
    executor.execute(messageTask);
  }
}



HazelcastAPI AbstractJetMessageTask Sınıfı - Member Üzerindeki Client Thread Çalıştırır

Giriş
Şu satırı dahil ederiz
import com.hazelcast.jet.impl.client.protocol.task.AbstractJetMessageTask;
getInvocationBuilder metodu
Kodu şöyle
@Override
protected InvocationBuilder getInvocationBuilder(Operation operation) {
  Address address;
  if (getLightJobCoordinator() != null) {
    MemberImpl member = nodeEngine.getClusterService().getMember(getLightJobCoordinator());
    if (member == null) {
      throw new TopologyChangedException("Light job coordinator left the cluster");
    }
    address = member.getAddress();
  } else {
    address = nodeEngine.getMasterAddress();
    if (address == null) {
      throw new RetryableHazelcastException("master not yet known");
    }
  }
  return nodeEngine.getOperationService()
    .createInvocationBuilder(JetServiceBackend.SERVICE_NAME,
    operation, address);
}


6 Şubat 2023 Pazartesi

Compact Serialization

Giriş
Hazelcast Compact Serialization sayfasına bakılabilir. Açıklaması şöyle
It doesn't require you to add something like a class definition. You add serializers like you add a Portable factory, and versioning and schema distribution are handled for you
Açıklaması şöyle
Compact serialization is the brand-new serialization mechanism built to have a small size on the serialized form yet allows fast data access for different query patterns. It is easy to use, language-independent, and performant. 
Portable Serialization vs Compact Serialization
Açıklaması şöyle
It's worth noting that both Portable Serialization and Compact Serialization serve different use cases. Portable Serialization provides more flexibility, versioning support, and language interoperability, while Compact Serialization excels in minimizing the serialized data size and achieving high performance.
Zero Configuration
Açıklaması şöyle
Compact serialization supports zero-configuration. In that case, it uses the fully qualified class name as its type name.
Custom Configuration

CompactSerializer Kalıtım
CompactSerializer 
  JavaRecordSerializer
  ReflectiveCompactSerializer
  ObjectIdCompactSerializer    

CompactReader Arayüzü
CompactReader kalıtımı şöyle
CompactReader 
  DefaultCompactReader



CompactWriter Arayüzü
Şu satırı dahil ederiz
import com.hazelcast.nio.serialization.compact.CompactWriter;
CompactWriter kalıtımı şöyle
CompactWriter
  DefaultCompactWriter
  SchemaWriter

writeCompact metodu
İmzası şöyle
<T> void writeCompact(String fieldName, T value);


1 Şubat 2023 Çarşamba

HazelcastAPI GenericRecordBuilder Sınıfı

Giriş
Şu satırı dahil ederiz
import com.hazelcast.nio.serialization.genericrecord.GenericRecordBuilder;
setGenericRecord metodu
Örnek
Şöyle yaparız
import static com.hazelcast.nio.serialization.genericrecord.GenericRecordBuilder.compact;
import static com.hazelcast.nio.serialization.genericrecord.GenericRecordBuilder.portable;

GenericRecord genericRecord = ...

GenericRecordBuilder compactBuilder = compact("myrecord");
compactBuilder.setGenericRecord("record1", genericRecord);



HazelcastAPI EventJournalReader Arayüzü

Giriş
Şu satırı dahil ederiz
import com.hazelcast.internal.journal.EventJournalReader;
Kalıtı şöyle
EventJournalReader
  CacheProxy
  ClientCacheProxy
  ClientMapProxy : Proxy implementation of IMap
  MapProxyImpl

subscribeToEventJournal metodu - int partitionId
Açıklama yaz

readFromEventJournal metodu
Şöyle yaparız
int partitionId = 1;
CompletionStage completionStage1 = eventJournalReader.subscribeToEventJournal(partitionId);

CompletionStage completionStage12 = eventJournalReader.readFromEventJournal(offset, 1, 
  MAX_FETCH_SIZE, //128
  partitionId, 
  predicate, 
  projection);

HazelcastAPI CP SubSystem vs Transaciton Yapılar

Giriş Bu yazının yazılma sebebi bu soru 1. Transactional Yapılar Hazelcast TransactionalMap, birden fazla veri değişikliğinin tek bir işlem ...