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"); } } }
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(); }
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); }
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"); } } }