Class ServiceRegistry

java.lang.Object
org.nustaq.kontraktor.Actors
org.nustaq.kontraktor.Actor<ServiceRegistry>
org.nustaq.kontraktor.services.ServiceRegistry
All Implemented Interfaces:
Serializable, Executor, org.nustaq.kontraktor.monitoring.Monitorable
Direct Known Subclasses:
DynDataServiceRegistry

public class ServiceRegistry extends org.nustaq.kontraktor.Actor<ServiceRegistry>
Created by ruedi on 11.08.2015. a simple service registry. Services can be registered by name. They are expected to send cyclical heartbeats. By registering a listener (callback) remote services can listen to availability/unavailability of services Rationale: in cluster of services managing connectivity gets complex quickly. In order to simplify this, services are given a single point of contact: the service registry (serviceRegistry). They register themself and obtain address and availability from the central registry. Note: Downside is, this is a SPOF.
See Also:
  • Field Details

  • Constructor Details

    • ServiceRegistry

      public ServiceRegistry()
  • Method Details

    • init

      public void init(ClusterCfg cfg)
    • serviceDumper

      public void serviceDumper()
    • registerService

      public void registerService(org.nustaq.kontraktor.remoting.base.ServiceDescription desc)
    • getServiceMap

      public org.nustaq.kontraktor.IPromise<Map<String,org.nustaq.kontraktor.remoting.base.ServiceDescription>> getServiceMap()
    • getService

      protected org.nustaq.kontraktor.remoting.base.ServiceDescription getService(String name)
    • subscribe

      public void subscribe(org.nustaq.kontraktor.Callback<org.nustaq.kontraktor.util.Pair<String,org.nustaq.kontraktor.remoting.base.ServiceDescription>> cb)
    • broadcastAvailable

      protected void broadcastAvailable(org.nustaq.kontraktor.remoting.base.ServiceDescription desc)
    • broadCastTimeOut

      protected void broadCastTimeOut(org.nustaq.kontraktor.remoting.base.ServiceDescription desc)
    • sendServiceBroadcast

      public void sendServiceBroadcast(String messageId, Serializable message)
    • getConfig

      public org.nustaq.kontraktor.IPromise<ClusterCfg> getConfig()
    • receiveHeartbeat

      public void receiveHeartbeat(String serviceName, String uniqueKey)
    • receiveHeartbeatWithStatus

      public void receiveHeartbeatWithStatus(String serviceName, String uniqueKey, Serializable status)
    • removeStatus

      protected void removeStatus(String key)
    • updateStatus

      protected void updateStatus(long now, org.nustaq.kontraktor.remoting.base.ServiceDescription td, String key, Serializable status)
    • checkTimeout

      public void checkTimeout()
    • getServiceList

      protected List<org.nustaq.kontraktor.remoting.base.ServiceDescription> getServiceList(String serviceName)
    • parseCommandLine

      public static ServiceArgs parseCommandLine(String[] args, String[] concatArgs, ServiceArgs options)
    • parseCommandLine

      public static ServiceArgs parseCommandLine(String[] args, ServiceArgs options)
    • getDynDataDistribution

      public org.nustaq.kontraktor.IPromise<org.nustaq.reallive.server.dynamic.DynClusterDistribution> getDynDataDistribution()
      only valid on DynData cluster, get distribution as reported by datanodes
      Returns:
    • getActiveDynDataDistribution

      public org.nustaq.kontraktor.IPromise<org.nustaq.reallive.server.dynamic.DynClusterDistribution> getActiveDynDataDistribution()
      only valid on DynData cluster, get distribution as assumed by registry
      Returns:
    • balanceDynShards

      public org.nustaq.kontraktor.IPromise balanceDynShards()
      only valid on DynData cluster, rebalance data load
      Returns:
    • releaseDynShard

      public org.nustaq.kontraktor.IPromise releaseDynShard(String name)
      drop node, remove all data !!not yet implemented!!
      Parameters:
      name -
      Returns:
    • getStati

      public org.nustaq.kontraktor.IPromise<List<ServiceRegistry.StatusEntry>> getStati()
    • main

      public static void main(String[] args)
    • start

      public static ServiceRegistry start(String[] args)
    • start

      public static ServiceRegistry start(RegistryArgs options)
    • start

      public static void start(SingleProcessRLClusterArgs options, ClusterCfg cfg)
    • start

      public static ServiceRegistry start(RegistryArgs _options, ClusterCfg cfg, Class<? extends ServiceRegistry> clazz)
    • isDynamic

      public org.nustaq.kontraktor.IPromise<Boolean> isDynamic()
    • getPrepareResponse

      public Consumer<io.undertow.server.HttpServerExchange> getPrepareResponse()
    • getReqAuth

      public Function<io.undertow.util.HeaderMap,org.nustaq.kontraktor.IPromise> getReqAuth()