11 Ekim 2021 Pazartesi

IgniteEx Sınıfı - Internal Sınıf Kullanmayın

Giriş
Şu satırı dahil ederiz
import org.apache.ignite.internal.IgniteEx
context metodu
 Topolojideki değişikleri dinlememizi sağlar.
Örnek
Elimizde dinlemek istediğimiz şu liste olsun.
import static org.apache.ignite.events.EventType.EVT_NODE_FAILED;
import static org.apache.ignite.events.EventType.EVT_NODE_JOINED;
import static org.apache.ignite.events.EventType.EVT_NODE_LEFT;
import static org.apache.ignite.events.EventType.EVT_NODE_SEGMENTED;

private static final int[] EVTS_DISCOVERY = new int[] {
  EVT_NODE_JOINED, EVT_NODE_LEFT, EVT_NODE_FAILED, EVT_NODE_SEGMENTED
};
Şöyle yaparız. Topolojideki değişikleri dinlememizi sağlar.
import org.apache.ignite.cluster.ClusterNode;
import org.apache.ignite.events.DiscoveryEvent;
import org.apache.ignite.internal.IgniteEx;
import org.apache.ignite.internal.managers.discovery.DiscoCache;

private volatile List<ServiceInstance> instances;

IgniteEx ignite = ...;

ignite.context().event().addDiscoveryEventListener(this::topologyChanged,
  EVTS_DISCOVERY);
updateInstances(ignite.cluster().nodes());

private void topologyChanged(DiscoveryEvent event, DiscoCache cache) {
  updateInstances(event.topologyNodes());
}

private void updateInstances(Collection<ClusterNode> nodes) {
  instances = nodes.stream()
    .filter(node -> !node.isClient())
    .map(this::toServiceInstance)
    .collect(Collectors.toList());
}

private ServiceInstance toServiceInstance(ClusterNode node) {
  return new DefaultServiceInstance(node.consistentId().toString(),
    SERVICE_ID,
    node.attribute("load_balancing_host"),
    node.attribute("load_balancing_port"),
    false
  );
}


Hiç yorum yok:

Yorum Gönder

Ignite Transaction Kullanımı

Giriş Bir tablo 3 tane atomicity değerinden birisine sahip olabilir. 1. ATOMIC 2. TRANSACTIONAL 3. TRANSACTIONAL_SNAPSHOT ATOMIC Açıklaması ...