private static DeploymentServerState CreateState(IActorRefFactory context, ISharpRepositoryConfiguration configuration, IDirectory fileSystem, DataTransferManager manager, RepositoryApi repositoryApi) { var changeTracker = context.ActorOf("Change-Tracker", ChangeTrackerActor.New()); var trashBin = configuration.GetInstance <ToDeleteRevision, string>(CleanUpManager.RepositoryKey); var cleanUp = context.ActorOf("CleanUp-Manager", CleanUpManager.New(configuration, fileSystem)); cleanUp.Tell(CleanUpManager.Initialization); var router = new SmallestMailboxPool(Environment.ProcessorCount) .WithSupervisorStrategy(SupervisorStrategy.DefaultStrategy); var queryProps = Feature.Props(AppQueryHandler.New(configuration.GetInstance <AppData, string>(), fileSystem, manager, changeTracker)) .WithRouter(router); var query = context.ActorOf(queryProps, "QueryRouter"); var buildSystem = WorkDistributorFeature <BuildRequest, BuildCompled> .Create(context, Props.Create(() => new BuildingActor(manager)), "Compiler", TimeSpan.FromHours(1), "CompilerSupervisor"); var processorProps = Feature.Props(AppCommandProcessor.New(configuration.GetInstance <AppData, string>(), fileSystem, repositoryApi, manager, trashBin, buildSystem, changeTracker)) .WithRouter(router); var processor = context.ActorOf(processorProps, "ProcessorRouter"); return(new DeploymentServerState(query, processor)); }
private void StartScanners() { var props = new SmallestMailboxPool(10).Props( Context.DI().Props <ProjectInfoScanActor>()); props.WithSupervisorStrategy(new OneForOneStrategy(2, 20, e => Directive.Restart)); _scanners = Context.ActorOf(props, "scanner_worker"); }
private IEnumerable <IActorRef> CreateNotificationsPools(IEnumerable <Props> notificationsActorsProps) { return(notificationsActorsProps.Select(props => { var pool = new SmallestMailboxPool(NotificationsActorsPoolSize); var notificationsPoolProps = props.WithRouter(pool); return Context.ActorOf(notificationsPoolProps); })); }
public override IActorRef Build(IUntypedActorContext context, string name) { var router = new SmallestMailboxPool(_serviceSettings.NrOfTransactionMonitors); return(context.ActorOf ( context.DI().Props <TransactionMonitorActor>().WithRouter(router), name )); }
public void CanSerializeSmallestMailboxPool() { var decider = Decider.From( Directive.Restart, Directive.Stop.When<ArgumentException>(), Directive.Stop.When<NullReferenceException>()); var supervisor = new OneForOneStrategy(decider); var message = new SmallestMailboxPool(10, null, supervisor, "abc"); AssertEqual(message); }
public Props Configurate(Props mutator) { var route = new SmallestMailboxPool(_instances) .WithSupervisorStrategy(_supervisorStrategy); if (_resizer == null) { route = route.WithResizer(_resizer); } if (!string.IsNullOrWhiteSpace(_dispatcher)) { route = route.WithDispatcher(_dispatcher); } mutator = mutator.WithRouter(route); return(_custom != null?_custom(mutator) : mutator); }
public DeploymentServerImpl(IMongoClient client, DataTransferManager dataTransfer, RepositoryApi repositoryProxy) { var changeTracker = Context.ActorOf <ChangeTrackerActor>(); var database = client.GetDatabase("Deployment"); var trashBin = database.GetCollection <ToDeleteRevision>("TrashBin"); var files = new GridFSBucket(database, new GridFSBucketOptions { BucketName = "Apps" }); var cleanUp = Context.ActorOf(() => new CleanUpManager(database, "CleanUp", trashBin, files), "CleanUp-Manager"); cleanUp.Tell(CleanUpManager.Initialization); var router = new SmallestMailboxPool(Environment.ProcessorCount) .WithSupervisorStrategy(Akka.Actor.SupervisorStrategy.DefaultStrategy); var queryProps = Props.Create(() => new AppQueryHandler(database.GetCollection <AppData>(AppsCollectionName, null), files, dataTransfer, changeTracker)) .WithRouter(router); var query = Context.ActorOf(queryProps, "QueryRouter"); Receive <IDeploymentQuery>(q => query.Forward(q)); var buildSystem = WorkDistributor <BuildRequest, BuildCompled> .Create(Context, Props.Create(() => new BuildingActor(dataTransfer)), "Compiler", TimeSpan.FromHours(1), "CompilerSupervisor"); var processorProps = Props.Create(() => new AppCommandProcessor(database.GetCollection <AppData>(AppsCollectionName, null), files, repositoryProxy, dataTransfer, trashBin, buildSystem, changeTracker)) .WithRouter(router); var processor = Context.ActorOf(processorProps, "ProcessorRouter"); Receive <IDeploymentCommand>(a => processor.Forward(a)); Receive <string>(s => { try { database.GetCollection <AppData>(AppsCollectionName).Indexes.CreateOne(new CreateIndexModel <AppData>(Builders <AppData> .IndexKeys.Ascending(ad => ad.Name))); } catch (Exception e) { Log.Error(e, "Error on Creating Index for Data"); } }); }
public void CanSerializeSmallestMailboxPool() { var message = new SmallestMailboxPool(10); AssertEqual(message); }