示例#1
0
        public static Container BuildEnvironment()
        {
            //JsConfig.DateHandler = JsonDateHandler.ISO8601;
            ConfigureObserver();
            var integrationPath =  Settings.Default.storage; //AzureSettingsProvider.GetStringOrThrow(Conventions.StorageConfigName);
            //var email = AzureSettingsProvider.GetStringOrThrow(Conventions.SmtpConfigName);

            //var core = new SmtpHandlerCore(email);
            var setup = new Setup
            {
                //Smtp = core,
                //FreeApiKey = freeApiKey,
                //WebClientUrl = clientUri,
                //HttpEndpoint = endPoint,
                //EncryptorTool = new EncryptorTool(systemKey)
            };

            if (integrationPath.StartsWith("file:"))
            {
                var path = integrationPath.Remove(0, 5);

                SystemObserver.Notify("Using store : {0}", path);

                var config = FileStorage.CreateConfig(path);

                return setup.
                    ConfigStreaming(config.CreateStreaming()).
                    ConfigDocumentStore(config.CreateDocumentStore).
                    ConfigInbox(s => config.CreateInbox(s, DecayEvil.BuildExponentialDecay(500))).
                    ConfigTapes(config.CreateAppendOnlyStore).
                    ConfigQueueWriter(config.CreateQueueWriter).
                    ConfigureQueues(1,1).
                    RegisterBoundedContext<DDDSample.BoundedContext>().
                    RegisterDispatcher<DDDSample.BoundedContext>(new TestDispatcher()).
                    Build();

            }
            //if (integrationPath.StartsWith("Default") || integrationPath.Equals("UseDevelopmentStorage=true", StringComparison.InvariantCultureIgnoreCase))
            //{
            //    var config = AzureStorage.CreateConfig(integrationPath);
            //    setup.Streaming = config.CreateStreaming();
            //    setup.CreateDocs = config.CreateDocumentStore;
            //    setup.CreateInbox = s => config.CreateInbox(s);
            //    setup.CreateQueueWriter = config.CreateQueueWriter;
            //    setup.CreateTapes = config.CreateAppendOnlyStore;
            //    setup.ConfigureQueues(4, 4);
            //    return setup.Build();
            //}
            throw new InvalidOperationException("Unsupported environment");
        }