17 Kasım 2022 Perşembe

HazelcastExecutor DurableExecutorContainer Sınıfı

Giriş
Şu satırı dahil ederiz
import com.hazelcast.durableexecutor.impl.DurableExecutorContainer;
Bu sınıfın içinde bir Runnable var. Şöyle
public class DurableExecutorContainer {

  public final class TaskProcessor extends FutureTask implements Runnable {
    ...
  }
}
Thread ismi şöyle.  Son kısım, thread-1 ve thread-5 arasında bir şey olur
hz.XXX.cached-thread-1
Command Pattern
AbstractDurableExecutorOperation : Tüm durable task'ların atası
TaskOperation :  DurableExecutorService executor.submit() ile çalışır

DurableExecutorPartitionContainer Sınıfı
DurableExecutorContainer nesnesi DurableExecutorPartitionContainer içinde durur. Her partition için kod şöyle
public class DurableExecutorPartitionContainer {

  private final int partitionId;
  private final NodeEngineImpl nodeEngine;

  private final ConcurrentMap<String, DurableExecutorContainer> executorContainerMap
            = new ConcurrentHashMap<>();
    ...
}

execute metodu
Şöyle. Yeni bir TaskProcessor yaratır ve executionService.executeDurable() ile teslim eder. Thread ismi hz.XXX.cached-thread-1 gibi. thread-1 ve thread-5 
public DurableExecutorContainer(NodeEngineImpl nodeEngine, String name, int partitionId,
                                int durability, boolean statisticsEnabled, 
                                TaskRingBuffer ringBuffer) {
  this.name = name;
  this.nodeEngine = nodeEngine;
  this.executionService = nodeEngine.getExecutionService();
  this.partitionId = partitionId;
  this.logger = nodeEngine.getLogger(DurableExecutorContainer.class);
  this.durability = durability;
  this.ringBuffer = ringBuffer;
  this.statisticsEnabled = statisticsEnabled;
  this.executorStats = ((DistributedDurableExecutorService) nodeEngine
                                                         .getService(SERVICE_NAME))
                                                         .getExecutorStats();
}

public int execute(Callable callable) {
  try {
    int sequence = ringBuffer.add(callable);
    TaskProcessor processor = new TaskProcessor(sequence, callable);
    executionService.executeDurable(name, processor);
    return sequence;
  } catch (RejectedExecutionException e) {
    if (statisticsEnabled) {
      executorStats.rejectExecution(name);
    }
    throw e;
  }
}

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