コード例 #1
0
 public static async Task Main(string[] args)
 {
     await Bootstrap.StartNode(args, KillRecpientType.Service)
     .ConfigurateAkkaSystem((context, system) =>
     {
         RepositoryManager.InitRepositoryManager(
             system,
             system.Settings.Config.GetString("akka.persistence.journal.mongodb.connection-string"),
             DataTransferManager.New(system, "Data-Tranfer-Manager"));
     })
     .Build().Run();
 }
コード例 #2
0
            public ServiceManager(AppConfig config)
            {
                _dataTransfer  = DataTransferManager.New(Context, "File_Coordination");
                _repositoryApi = RepositoryApi.CreateProxy(Context.System);

                Receive <Init>(_ =>
                {
                    try
                    {
                        if (string.IsNullOrWhiteSpace(config.CurrentConfig))
                        {
                            return;
                        }

                        var hConfig          = ConfigurationFactory.ParseString(config.CurrentConfig);
                        var connectionString = hConfig.GetString("akka.persistence.journal.mongodb.connection-string");

                        if (string.IsNullOrWhiteSpace(connectionString))
                        {
                            return;
                        }

                        var stream = Context.System.EventStream;

                        Cluster.Get(Context.System).RegisterOnMemberUp(() =>
                        {
                            InitClient(connectionString);
                            stream.Publish(new DeploymentServicesChanged(_repository?.IsOk == true && _deploymentServer?.IsOk == true));
                        });
                    }
                    catch (Exception e)
                    {
                        Log.Warning(e, "Error on Parsing Current Configuration");
                    }
                });
                Receive <NewConnectionString>(s =>
                {
                    try
                    {
                        var hConfig          = ConfigurationFactory.ParseString(s.Config);
                        var connectionString = hConfig.GetString("akka.persistence.journal.mongodb.connection-string");

                        InitClient(connectionString);
                    }
                    catch (Exception e)
                    {
                        Log.Error(e, "Error on Init new Connection String");
                    }

                    Context.System.EventStream.Publish(new DeploymentServicesChanged(_repository?.IsOk == true && _deploymentServer?.IsOk == true));
                });
                Receive <GetCurrentState>(_ => Sender.Tell(new DeploymentServicesChanged(_repository?.IsOk == true && _deploymentServer?.IsOk == true)));
            }
コード例 #3
0
        static async Task Main(string[] args)
        {
            await Bootstrap.StartNode(args, KillRecpientType.Service)
            .ConfigurateAkkaSystem((context, system) =>
            {
                var repoManager = RepositoryApi.CreateProxy(system);
                var fileManager = DataTransferManager.New(system, "FileTransferManager");

                DeploymentManager.InitDeploymentManager(
                    system,
                    system.Settings.Config.GetString("akka.persistence.journal.mongodb.connection-string"), fileManager, repoManager);
            })
            .Build().Run();
        }
コード例 #4
0
        public SetupBuilder(string hostName, string?seedHostName, AppConfig config, Action <string> log, ActorSystem actorSystem, DeploymentApi api, RepositoryApi repository, IActionInvoker actionInvoker)
        {
            _logger       = new LoggerConfiguration().WriteTo.Logger(Log.ForContext <SetupBuilder>()).WriteTo.Sink(new DelegateSink(s => _log !(s))).CreateLogger();
            _dataTransfer = DataTransferManager.New(actorSystem);

            _context = new RunContext
            {
                HostName     = hostName,
                SeedHostName = seedHostName
            };
            _config        = config;
            _log           = log;
            _api           = api;
            _repository    = repository;
            _actionInvoker = actionInvoker;
        }
コード例 #5
0
            public TestActor()
            {
                _dataTransfer = DataTransferManager.New(Context);
                _dataTransfer.SubscribeToEvent <TransferCompled>();
                _dataTransfer.SubscribeToEvent <TransferFailed>();
                _dataTransfer.SubscribeToEvent <IncomingDataTransfer>();

                Receive <IncomingDataTransfer>(d => d.Accept(() => File.Create(TargetFile)));

                Receive <TransferMessages.TransferCompled>(c =>
                {
                    if (_currentTransfer == null)
                    {
                        return;
                    }

                    try
                    {
                        switch (c)
                        {
                        case TransferCompled _:
                            ZipFile.Open(TargetFile, ZipArchiveMode.Read).Dispose();
                            Console.WriteLine("Tranfer Beended");
                            break;

                        case TransferFailed failed:
                            Console.WriteLine($"Transfer Fehler: {failed.Reason}");
                            break;
                        }
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e);
                    }
                    finally
                    {
                        Self.Tell(_currentTransfer);
                    }
                });



                var toDo = new Queue <Action <ManualResetEvent> >();

                toDo.Enqueue(Init);
                toDo.Enqueue(RegisterTest);
                toDo.Enqueue(RegisterTest);
                toDo.Enqueue(TransferTest);
                toDo.Enqueue(TransferTest);
                toDo.Enqueue(CleanTest);

                Receive <ManualResetEvent>(evt =>
                {
                    if (_cancel || toDo.Count == 0)
                    {
                        evt.Set();
                        return;
                    }

                    var op = toDo.Dequeue();
                    op(evt);
                    Thread.Sleep(2000);
                });
            }
コード例 #6
0
        public static async Task Main(string[] args)
        {
            await Bootstrap.StartNode(args, KillRecpientType.Service, IpcApplicationType.Client,
                                      ab =>
            {
                ab.OnMemberUp((context, system, cluster) =>
                {
                    string ApplyMongoUrl(string baseUrl, string repoKey, SharpRepositoryConfiguration configuration)
                    {
                        var builder = new MongoUrlBuilder(baseUrl)
                        {
                            DatabaseName = repoKey, ApplicationName = context.HostingEnvironment.ApplicationName
                        };
                        var mongoUrl = builder.ToString();

                        configuration.AddRepository(new MongoDbRepositoryConfiguration(repoKey, mongoUrl)
                        {
                            Factory = typeof(MongoDbConfigRepositoryFactory)
                        });

                        return(mongoUrl);
                    }

                    ServiceRegistry.Get(system)
                    .RegisterService(new RegisterService(
                                         context.HostingEnvironment.ApplicationName,
                                         cluster.SelfUniqueAddress,
                                         ServiceTypes.Infrastructure));

                    var connectionstring = system.Settings.Config.GetString("akka.persistence.snapshot-store.mongodb.connection-string");
                    if (string.IsNullOrWhiteSpace(connectionstring))
                    {
                        LogManager.GetCurrentClassLogger().Error("No Mongo DB Connection provided: Shutdown");
                        system.Terminate();
                        return;
                    }

                    var config            = new SharpRepositoryConfiguration();
                    var fileSystemBuilder = new VirtualFileFactory();

                    ApplyMongoUrl(connectionstring, CleanUpManager.RepositoryKey, config);

                    var url = ApplyMongoUrl(connectionstring, RepositoryManager.RepositoryKey, config);
                    RepositoryManager.InitRepositoryManager(system,
                                                            new RepositoryManagerConfiguration(config, fileSystemBuilder.CreateMongoDb(url),
                                                                                               DataTransferManager.New(system, "Repository-DataTransfer")));

                    url = ApplyMongoUrl(connectionstring, DeploymentManager.RepositoryKey, config);
                    DeploymentManager.InitDeploymentManager(system,
                                                            new DeploymentConfiguration(config,
                                                                                        fileSystemBuilder.CreateMongoDb(url),
                                                                                        DataTransferManager.New(system, "Deployment-DataTransfer"),
                                                                                        RepositoryApi.CreateProxy(system)));

                    ApplyMongoUrl(connectionstring, ServiceManagerDeamon.RepositoryKey, config);
                    ServiceManagerDeamon.Init(system, config);
                })
                .OnMemberRemoved((_, system, _) => system.Terminate());
            }, true)