public static void StartWithConfig(ClusterConfig config) { cfg = config; Remote.Remote.Start(cfg.Address, cfg.Port, cfg.RemoteConfig); Serialization.RegisterFileDescriptor(ProtosReflection.Descriptor); Logger.LogInformation("Starting Proto.Actor cluster"); var(h, p) = ParseAddress(ProcessRegistry.Instance.Address); var kinds = Remote.Remote.GetKnownKinds(); Partition.SpawnPartitionActors(kinds); Partition.SubscribeToEventStream(); PidCache.Spawn(); PidCache.SubscribeToEventStream(); MemberList.SubscribeToEventStream(); cfg.ClusterProvider.RegisterMemberAsync(cfg.Name, h, p, kinds, config.InitialMemberStatusValue, config.MemberStatusValueSerializer).Wait(); cfg.ClusterProvider.MonitorMemberStatusChanges(); Logger.LogInformation("Started Cluster"); }
public static void Start(string clusterName, string address, int port, IClusterProvider provider) { Remote.Remote.Start(address, port); cp = provider; Serialization.RegisterFileDescriptor(ProtosReflection.Descriptor); Logger.LogInformation("Starting Proto.Actor cluster"); var(h, p) = ParseAddress(ProcessRegistry.Instance.Address); var kinds = Remote.Remote.GetKnownKinds(); Partition.SpawnPartitionActors(kinds); Partition.SubscribeToEventStream(); PidCache.Spawn(); PidCache.SubscribeToEventStream(); MemberList.Spawn(); MemberList.SubscribeToEventStream(); cp.RegisterMemberAsync(clusterName, h, p, kinds).Wait(); cp.MonitorMemberStatusChanges(); Logger.LogInformation("Started Cluster"); }