예제 #1
0
        static void Main(string[] args)
        {
            ConfigureObserver();

            const string integrationPath = @"temp";
            var config = FileStorage.CreateConfig(integrationPath, "files");

            var startupMessages = new List<ISampleMessage>();
            var proc = Process.GetCurrentProcess();
            startupMessages.Add(new InstanceStarted("Inject git rev", proc.ProcessName,
                proc.Id.ToString()));

            {
                Console.WriteLine("Starting in funny mode by wiping store and sending a few messages");
                config.Reset();
                startupMessages.AddRange(DemoMessages.Create());
            }

            var setup = new SetupClassThatReplacesIoCContainerFramework
                {
                    CreateNuclear = strategy => config.CreateNuclear(strategy),
                    Streaming = config.CreateStreaming(),
                    Tapes = config.CreateTape(Topology.TapesContainer),
                    CreateInbox = s => config.CreateInbox(s),
                    CreateQueueWriter = s => config.CreateQueueWriter(s),
                };

            var components = setup.AssembleComponents();

            using (var cts = new CancellationTokenSource())
            using (var engine = components.Builder.Build())
            {
                var task = engine.Start(cts.Token);

                foreach (var sampleMessage in startupMessages)
                {
                    components.Sender.SendOne(sampleMessage);
                }

                Console.WriteLine(@"Press enter to stop");
                Console.ReadLine();
                cts.Cancel();

                if (task.Wait(5000))
                {
                    Console.WriteLine(@"Terminating");
                }
            }
        }
예제 #2
0
        public override bool OnStart()
        {
            ServicePointManager.DefaultConnectionLimit = 48;
            ConfigureObserver();
            var conn = AzureSettingsProvider.GetStringOrThrow("DataConnection");
            var config = AzureStorage.CreateConfig(conn);

            var startupMessages = new List<ISampleMessage>();

            var roleName = RoleEnvironment.CurrentRoleInstance.Role.Name;
            var instanceId = RoleEnvironment.CurrentRoleInstance.Id;

            startupMessages.Add(new InstanceStarted("Inject git rev", roleName, instanceId));

            {
                Console.WriteLine("Starting in funny mode by wiping store and sending a few messages");
                WipeAzureAccount.Fast(s => s.StartsWith("sample-"), config);
                startupMessages.AddRange(DemoMessages.Create());
            }

            var setup = new SetupClassThatReplacesIoCContainerFramework
                {
                    CreateNuclear = strategy => config.CreateNuclear(strategy, "views"),
                    Streaming = config.CreateStreaming(),
                    Tapes = config.CreateTape(Topology.TapesContainer),
                    CreateInbox = s => config.CreateInbox(s),
                    CreateQueueWriter = s => config.CreateQueueWriter(s),
                };

            var components = setup.AssembleComponents();

            _host = components.Builder.Build();

            foreach (var message in startupMessages)
            {
                components.Sender.SendOne(message);
            }

            return base.OnStart();
        }
예제 #3
0
        public void Start()
        {
            var config = FileStorage.CreateConfig(IntegrationPath, "files");

            var setup = new SetupClassThatReplacesIoCContainerFramework
            {
                CreateNuclear     = strategy => config.CreateNuclear(strategy),
                Streaming         = config.CreateStreaming(),
                Tapes             = config.CreateTape(Topology.TapesContainer),
                CreateInbox       = s => config.CreateInbox(s),
                CreateQueueWriter = s => config.CreateQueueWriter(s),
            };

            var components = setup.AssembleComponents();

            cts    = new CancellationTokenSource();
            engine = components.Builder.Build();
            task   = engine.Start(cts.Token);

            Bus.SetBus(new SimpleBus(components.Sender, components.Dispatcher));
            ProviderFactory.SetFactory(components.ProjectionFactory);
        }
예제 #4
0
파일: Program.cs 프로젝트: deke/lokad-cqrs
        static void Main(string[] args)
        {
            ConfigureObserver();

            var settings = LoadSettings();

            foreach (var setting in settings)
            {
                SystemObserver.Notify("[{0}] = {1}", setting.Key, setting.Value);
            }

            var setup = new SetupClassThatReplacesIoCContainerFramework();

            var integrationPath = settings["DataPath"];

            if (integrationPath.StartsWith("file:"))
            {
                var path   = integrationPath.Remove(0, 5);
                var config = FileStorage.CreateConfig(path);
                setup.Streaming         = config.CreateStreaming();
                setup.Tapes             = config.CreateTape;
                setup.Docs              = config.CreateNuclear(setup.Strategy).Container;
                setup.CreateInbox       = s => config.CreateInbox(s);
                setup.CreateQueueWriter = config.CreateQueueWriter;
            }
            else if (integrationPath.StartsWith("azure:"))
            {
                var path   = integrationPath.Remove(0, 6);
                var config = AzureStorage.CreateConfig(path);
                setup.Streaming         = config.CreateStreaming();
                setup.Tapes             = config.CreateTape;
                setup.Docs              = config.CreateNuclear(setup.Strategy).Container;
                setup.CreateInbox       = s => config.CreateInbox(s);
                setup.CreateQueueWriter = config.CreateQueueWriter;
            }
            else
            {
                throw new InvalidOperationException("Unsupperted environment");
            }
            var components = setup.AssembleComponents();


            var stream = setup.Tapes(Topology.TapesContainer).GetOrCreateStream(Topology.DomainLogName);

            StartupProjectionRebuilder.Rebuild(components.Setup.Docs, stream);
            using (var cts = new CancellationTokenSource())
                using (var engine = components.Builder.Build())
                {
                    var task = engine.Start(cts.Token);

                    var version         = ConfigurationManager.AppSettings.Get("appharbor.commit_id");
                    var instanceStarted = new InstanceStarted(version, "engine", Process.GetCurrentProcess().ProcessName);
                    components.Simple.SendOne(instanceStarted);

                    //startupMessages.ForEach(c => components.Sender.SendCommandsAsBatch(new ISampleCommand[] { c }));

                    Console.WriteLine(@"Press enter to stop");
                    Console.ReadLine();
                    cts.Cancel();
                    if (!task.Wait(5000))
                    {
                        Console.WriteLine(@"Terminating");
                    }
                }
        }
예제 #5
0
        static void Main(string[] args)
        {
            ConfigureObserver();

            var settings = LoadSettings();

            foreach (var setting in settings)
            {
                SystemObserver.Notify("[{0}] = {1}", setting.Key, setting.Value);
            }

            var setup = new SetupClassThatReplacesIoCContainerFramework();

            var integrationPath = settings["DataPath"];
            if (integrationPath.StartsWith("file:"))
            {
                var path = integrationPath.Remove(0, 5);
                var config = FileStorage.CreateConfig(path);
                setup.Streaming = config.CreateStreaming();
                setup.Tapes = config.CreateTape;
                setup.Docs = config.CreateNuclear(setup.Strategy).Container;
                setup.CreateInbox = s => config.CreateInbox(s);
                setup.CreateQueueWriter = config.CreateQueueWriter;
            }
            else if (integrationPath.StartsWith("azure:"))
            {
                var path = integrationPath.Remove(0, 6);
                var config = AzureStorage.CreateConfig(path);
                setup.Streaming = config.CreateStreaming();
                setup.Tapes = config.CreateTape;
                setup.Docs = config.CreateNuclear(setup.Strategy).Container;
                setup.CreateInbox = s => config.CreateInbox(s);
                setup.CreateQueueWriter = config.CreateQueueWriter;
            }
            else
            {
                throw new InvalidOperationException("Unsupperted environment");
            }
            var components = setup.AssembleComponents();

            var stream = setup.Tapes(Topology.TapesContainer).GetOrCreateStream(Topology.DomainLogName);

            StartupProjectionRebuilder.Rebuild(components.Setup.Docs, stream);
            using (var cts = new CancellationTokenSource())
            using (var engine = components.Builder.Build())
            {
                var task = engine.Start(cts.Token);

                var version = ConfigurationManager.AppSettings.Get("appharbor.commit_id");
                var instanceStarted = new InstanceStarted(version, "engine", Process.GetCurrentProcess().ProcessName);
                components.Simple.SendOne(instanceStarted);

                //startupMessages.ForEach(c => components.Sender.SendCommandsAsBatch(new ISampleCommand[] { c }));

                Console.WriteLine(@"Press enter to stop");
                Console.ReadLine();
                cts.Cancel();
                if (!task.Wait(5000))
                {
                    Console.WriteLine(@"Terminating");
                }
            }
        }