public void Initialize(HttpConfiguration configuration, Pandora pandora)
        {
            var container = new Container();
            container.RegisterSingleton<Pandora>(() => pandora);
            Func<IPipelineTransport> transport = () => container.Resolve<IPipelineTransport>();
            Func<ISerializer> serializer = () => container.Resolve<ISerializer>();
            container.RegisterSingleton<IPublisher<ICommand>>(() => new PipelinePublisher<ICommand>(transport(), serializer()));

            var serviceLocator = new ServiceLocator(container);
            ControllerFactory = new ServiceLocatorFactory(serviceLocator);

            var cfg = new CronusSettings(container)
                  .UseCluster(cluster =>
                       cluster.UseAggregateRootAtomicAction(atomic =>
                       {
                           if (pandora.Get<bool>("enable_redis_atomic_action"))
                               atomic.UseRedis(redis => redis.SetLockEndPoints(pandora.Get("redis_endpoints").ParseIPEndPoints(";")));
                           else
                               atomic.WithInMemory();
                       }))
                  .UseContractsFromAssemblies(new[] { Assembly.GetAssembly(typeof(PushNotificationWasSent)) })
                  .UseRabbitMqTransport(x =>
                  {
                      x.Server = pandora.Get("rabbitmq_server");
                      x.Username = pandora.Get("rabbitmq_username");
                      x.Password = pandora.Get("rabbitmq_password");
                      x.VirtualHost = pandora.Get("rabbitmq_virtualhost");
                  });

            (cfg as ICronusSettings).Build();
        }
        public static void Main(string[] args)
        {
            log4net.Config.XmlConfigurator.Configure();

            //var sf = BuildSessionFactory();
            var container = new Container();

            var cfg = new CronusSettings(container)
                .UseContractsFromAssemblies(new Assembly[] { Assembly.GetAssembly(typeof(RegisterAccount)), Assembly.GetAssembly(typeof(CreateUser)) })
                .UseProjectionConsumer(consumer => consumer
                .SetNumberOfConsumerThreads(5)
                    .WithDefaultPublishersWithRabbitMq()
                    .UseRabbitMqTransport()
                    .UseProjections(h => h
                        //.UseUnitOfWork(new UnitOfWorkFactory() { CreateBatchUnitOfWork = () => new BatchScope(sf) })
                        .RegisterAllHandlersInAssembly(Assembly.GetAssembly(typeof(UserProjection)))));
            //{
            //                return FastActivator.CreateInstance(type)
            //                    .AssignPropertySafely<IHaveNhibernateSession>(x => x.Session = context.BatchContext.Get<Lazy<ISession>>().Value);
            //            })));

            (cfg as ISettingsBuilder).Build();
            host = container.Resolve<CronusHost>();
            host.Start();

            Console.WriteLine("Projections started");
            Console.ReadLine();
            host.Stop();
        }
Пример #3
0
        private static void ConfigurePublisher()
        {
            log4net.Config.XmlConfigurator.Configure();

            var cfg = new CronusSettings(container)
                      .UseContractsFromAssemblies(new Assembly[] { Assembly.GetAssembly(typeof(RegisterAccount)), Assembly.GetAssembly(typeof(CreateUser)), Assembly.GetAssembly(typeof(ProjectionVersionManagerId)) })
                      .UseAzureServiceBusTransport(x =>
            {
                x.ClientId         = "162af3b1-ed60-4382-8ce8-a1199e0b5c31";
                x.ClientSecret     = "Jej7RF6wTtgTOoqhZokc+gROk2UovFaL+zG1YF2/ous=";
                x.ResourceGroup    = "mvclientshared.integration.all";
                x.SubscriptionId   = "b12a87ce-85b9-4780-afac-cc4295574db4";
                x.TenantId         = "a43960df-8c6f-4854-8628-7f61120c33f8";
                x.ConnectionString = "Endpoint=sb://mvclientshared-integration-all-srvbus-namespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=BQNROS3Pw8i5YIsoAclpWbkgHrZvUdPqlJdS/RCVc9c=";
                x.Namespace        = "mvclientshared-integration-all-srvbus-namespace";
            });
            //.UseRabbitMqTransport(x => x.Server = "docker-local.com");

            var collaborationProjections = typeof(Collaboration.Users.Projections.UserProjection).Assembly.GetTypes().Where(x => typeof(IProjectionDefinition).IsAssignableFrom(x));

            cfg.ConfigureCassandraProjectionsStore(x => x
                                                   .SetProjectionsConnectionString("Contact Points=docker-local.com;Port=9042;Default Keyspace=cronus_sample_20180213")
                                                   .SetProjectionTypes(collaborationProjections));

            (cfg as ISettingsBuilder).Build();

            var serializer = container.Resolve <ISerializer>();

            commandPublisher = (container.Resolve <ITransport>() as AzureBusTransport).GetPublisher <ICommand>(serializer);
        }
        private static void ConfigureRabbitMQPublisher()
        {
            log4net.Config.XmlConfigurator.Configure();

            var container = new Container();
            Func <IPipelineTransport> transport  = () => container.Resolve <IPipelineTransport>();
            Func <ISerializer>        serializer = () => container.Resolve <ISerializer>();

            container.RegisterSingleton <IPublisher <ICommand> >(() => new PipelinePublisher <ICommand>(transport(), serializer()));

            var cfg = new CronusSettings(container)
                      .UseContractsFromAssemblies(new Assembly[] { Assembly.GetAssembly(typeof(RegisterAccount)), Assembly.GetAssembly(typeof(CreateUser)) })
                      .UseRabbitMqTransport(x => x.Server = "docker-local.com");

            (cfg as ISettingsBuilder).Build();
            commandPublisher = container.Resolve <IPublisher <ICommand> >();
        }
        public static void Main(string[] args)
        {
            //Thread.Sleep(9000);
            log4net.Config.XmlConfigurator.Configure();

            var container = new Container();

            var COLL_POOOOORTHandlerFactory = new PortHandlerFactory(container, "Ports");
            var cfg = new CronusSettings(container)
                      .UseContractsFromAssemblies(new Assembly[]
            {
                Assembly.GetAssembly(typeof(RegisterAccount)),
                Assembly.GetAssembly(typeof(CreateUser))
            })
                      .UseRabbitMqTransport(x => x.Server = "docker-local.com")
                      .UsePortConsumer("Ports", consumable => consumable
                                       .WithDefaultPublishers()
                                       .UseAzureServiceBusTransport(x =>
            {
                x.ClientId         = "162af3b1-ed60-4382-8ce8-a1199e0b5c31";
                x.ClientSecret     = "Jej7RF6wTtgTOoqhZokc+gROk2UovFaL+zG1YF2/ous=";
                x.ResourceGroup    = "mvclientshared.integration.all";
                x.SubscriptionId   = "b12a87ce-85b9-4780-afac-cc4295574db4";
                x.TenantId         = "a43960df-8c6f-4854-8628-7f61120c33f8";
                x.ConnectionString = "Endpoint=sb://mvclientshared-integration-all-srvbus-namespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=BQNROS3Pw8i5YIsoAclpWbkgHrZvUdPqlJdS/RCVc9c=";
                x.Namespace        = "mvclientshared-integration-all-srvbus-namespace";
            })
                                       //.UseRabbitMqTransport(x => x.Server = "docker-local.com")
                                       .SetNumberOfConsumerThreads(5)
                                       .UsePorts(c => c.RegisterHandlersInAssembly(new[] { Assembly.GetAssembly(typeof(UserProjection)) }, COLL_POOOOORTHandlerFactory.Create)));

            (cfg as ISettingsBuilder).Build();

            host = container.Resolve <CronusHost>();
            host.Start();

            Console.WriteLine("Ports started");
            Console.ReadLine();

            host.Stop();
        }
Пример #6
0
        static void UseCronusHostWithCosmosEventStore()
        {
            var container = new Container();
            var cfg       = new CronusSettings(container)
                            .UseCluster(cluster => cluster.UseAggregateRootAtomicAction(atomic => atomic.WithInMemory()))
                            .UseContractsFromAssemblies(new[] { Assembly.GetAssembly(typeof(AccountRegistered)), Assembly.GetAssembly(typeof(UserCreated)) });

            string IAA = "IAA";
            var    IAA_appServiceFactory = new ApplicationServiceFactory(container, IAA);

            cfg.UseCommandConsumer(IAA, consumer => consumer
                                   .UseRabbitMqTransport(x => x.Server = "docker-local.com")
                                   .SetNumberOfConsumerThreads(1)
                                   .WithDefaultPublishers()
                                   .UseCosmosEventStore(eventStore => eventStore
                                                        .SetDocumentclient(new Uri("https://localhost:8081"), "C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==")
                                                        .SetThroughput(2500)
                                                        .WithNewStorageIfNotExists())
                                   .UseApplicationServices(cmdHandler => cmdHandler.RegisterHandlersInAssembly(new[] { typeof(AccountAppService).Assembly }, IAA_appServiceFactory.Create)));

            string COLL = "COLL";
            var    COLL_appServiceFactory = new ApplicationServiceFactory(container, COLL);

            cfg.UseCommandConsumer(COLL, consumer => consumer
                                   .UseRabbitMqTransport(x => x.Server = "docker-local.com")
                                   .SetNumberOfConsumerThreads(1)
                                   .WithDefaultPublishers()
                                   .UseCosmosEventStore(eventStore => eventStore
                                                        .SetDocumentclient(new Uri("https://localhost:8081"), "C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==")
                                                        .SetThroughput(2500)
                                                        .WithNewStorageIfNotExists())
                                   .UseApplicationServices(cmdHandler => cmdHandler.RegisterHandlersInAssembly(new[] { typeof(UserAppService).Assembly }, COLL_appServiceFactory.Create)));

            (cfg as ISettingsBuilder).Build();
            host = container.Resolve <CronusHost>();
            host.Start();
        }
        public static void Main(string[] args)
        {
            //Thread.Sleep(9000);
            log4net.Config.XmlConfigurator.Configure();

            var container = new Container();
            var COLL_POOOOORTHandlerFactory = new PortHandlerFactory(container, null);
            var cfg = new CronusSettings(container)
                .UseContractsFromAssemblies(new Assembly[] { Assembly.GetAssembly(typeof(RegisterAccount)), Assembly.GetAssembly(typeof(CreateUser)) })
                .UsePortConsumer(consumable => consumable
                    .WithDefaultPublishersWithRabbitMq()
                    .UseRabbitMqTransport()
                    .SetNumberOfConsumerThreads(5)
                    .UsePorts(c => c.RegisterAllHandlersInAssembly(Assembly.GetAssembly(typeof(UserProjection)), COLL_POOOOORTHandlerFactory.Create)));

            (cfg as ISettingsBuilder).Build();
            host = container.Resolve<CronusHost>();
            host.Start();

            Console.WriteLine("Ports started");
            Console.ReadLine();

            host.Stop();
        }
        static void UseCronusHostWithCassandraEventStore()
        {
            var container = new Container();
            var cfg       = new CronusSettings(container)
                            .UseCluster(cluster =>
            {
                cluster.ClusterName     = "playground";
                cluster.CurrentNodeName = "node1";
                cluster.UseAggregateRootAtomicAction(atomic => atomic.WithInMemory());
            })
                            .UseContractsFromAssemblies(new[] { Assembly.GetAssembly(typeof(AccountRegistered)), Assembly.GetAssembly(typeof(UserCreated)), Assembly.GetAssembly(typeof(ProjectionVersionManagerId)) });

            string SYSTEM = "SYSTEM";
            var    SYSTEM_appServiceFactory = new ServiceLocator(container, SYSTEM);

            cfg.UseCommandConsumer(SYSTEM, consumer => consumer
                                   .UseAzureServiceBusTransport(x =>
            {
                x.ClientId         = "162af3b1-ed60-4382-8ce8-a1199e0b5c31";
                x.ClientSecret     = "Jej7RF6wTtgTOoqhZokc+gROk2UovFaL+zG1YF2/ous=";
                x.ResourceGroup    = "mvclientshared.integration.all";
                x.SubscriptionId   = "b12a87ce-85b9-4780-afac-cc4295574db4";
                x.TenantId         = "a43960df-8c6f-4854-8628-7f61120c33f8";
                x.ConnectionString = "Endpoint=sb://mvclientshared-integration-all-srvbus-namespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=BQNROS3Pw8i5YIsoAclpWbkgHrZvUdPqlJdS/RCVc9c=";
                x.Namespace        = "mvclientshared-integration-all-srvbus-namespace";
            })
                                   //.UseRabbitMqTransport(x => x.Server = "docker-local.com")
                                   .WithDefaultPublishers()
                                   .UseCassandraEventStore(eventStore => eventStore
                                                           .SetConnectionString(ConfigurationManager.ConnectionStrings["cronus_es"].ConnectionString)
                                                           .SetAggregateStatesAssembly(typeof(ProjectionVersionManagerAppService)))
                                   .UseSystemServices(cmdHandler => cmdHandler.RegisterHandlersInAssembly(new[] { typeof(ProjectionVersionManagerAppService).Assembly }, SYSTEM_appServiceFactory.Resolve))
                                   );

            //Endpoint = sb://mvclientshared-integration-all-srvbus-namespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=BQNROS3Pw8i5YIsoAclpWbkgHrZvUdPqlJdS/RCVc9c=
            string IAA = "IAA";
            var    IAA_appServiceFactory = new ServiceLocator(container, IAA);

            cfg.UseCommandConsumer(IAA, consumer => consumer
                                   .UseAzureServiceBusTransport(x =>
            {
                x.ClientId         = "162af3b1-ed60-4382-8ce8-a1199e0b5c31";
                x.ClientSecret     = "Jej7RF6wTtgTOoqhZokc+gROk2UovFaL+zG1YF2/ous=";
                x.ResourceGroup    = "mvclientshared.integration.all";
                x.SubscriptionId   = "b12a87ce-85b9-4780-afac-cc4295574db4";
                x.TenantId         = "a43960df-8c6f-4854-8628-7f61120c33f8";
                x.ConnectionString = "Endpoint=sb://mvclientshared-integration-all-srvbus-namespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=BQNROS3Pw8i5YIsoAclpWbkgHrZvUdPqlJdS/RCVc9c=";
                x.Namespace        = "mvclientshared-integration-all-srvbus-namespace";
            })
                                   //.UseRabbitMqTransport(x => x.Server = "docker-local.com")
                                   //.UseAzureServiceBus
                                   .SetNumberOfConsumerThreads(5)
                                   .WithDefaultPublishers()
                                   .UseCassandraEventStore(eventStore => eventStore
                                                           .SetConnectionString(ConfigurationManager.ConnectionStrings["cronus_es"].ConnectionString)
                                                           .SetAggregateStatesAssembly(typeof(AccountState)))
                                   .UseApplicationServices(cmdHandler => cmdHandler.RegisterHandlersInAssembly(new[] { typeof(AccountAppService).Assembly }, IAA_appServiceFactory.Resolve))
                                   );

            string COLL = "COLL";
            var    COLL_appServiceFactory = new ServiceLocator(container, COLL);

            cfg.UseCommandConsumer(COLL, consumer => consumer
                                   .UseAzureServiceBusTransport(x =>
            {
                x.ClientId         = "162af3b1-ed60-4382-8ce8-a1199e0b5c31";
                x.ClientSecret     = "Jej7RF6wTtgTOoqhZokc+gROk2UovFaL+zG1YF2/ous=";
                x.ResourceGroup    = "mvclientshared.integration.all";
                x.SubscriptionId   = "b12a87ce-85b9-4780-afac-cc4295574db4";
                x.TenantId         = "a43960df-8c6f-4854-8628-7f61120c33f8";
                x.ConnectionString = "Endpoint=sb://mvclientshared-integration-all-srvbus-namespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=BQNROS3Pw8i5YIsoAclpWbkgHrZvUdPqlJdS/RCVc9c=";
                x.Namespace        = "mvclientshared-integration-all-srvbus-namespace";
            })
                                   //.UseRabbitMqTransport(x => x.Server = "docker-local.com")
                                   .SetNumberOfConsumerThreads(5)
                                   .WithDefaultPublishers()
                                   .UseCassandraEventStore(eventStore => eventStore
                                                           .SetConnectionString(ConfigurationManager.ConnectionStrings["cronus_es"].ConnectionString)
                                                           .SetAggregateStatesAssembly(typeof(UserState)))
                                   .UseApplicationServices(cmdHandler => cmdHandler.RegisterHandlersInAssembly(new[] { typeof(UserAppService).Assembly }, COLL_appServiceFactory.Resolve))
                                   );

            (cfg as ISettingsBuilder).Build();
            host = container.Resolve <CronusHost>();
            host.Start();
        }
        public static void Main(string[] args)
        {
            log4net.Config.XmlConfigurator.Configure();

            //var sf = BuildSessionFactory();
            var container      = new Container();
            var serviceLocator = new ServiceLocator(container);

            //var projectionTypes = typeof(UserProjection).Assembly.GetTypes().Where(x => typeof(IProjectionDefinition).IsAssignableFrom(x));
            var systemProjections        = typeof(PersistentProjectionVersionHandler).Assembly.GetTypes().Where(x => typeof(IProjectionDefinition).IsAssignableFrom(x)).ToList();
            var collaborationProjections = typeof(Collaboration.Users.Projections.UserProjection).Assembly.GetTypes().Where(x => typeof(IProjectionDefinition).IsAssignableFrom(x));

            systemProjections.AddRange(collaborationProjections);

            var cfg = new CronusSettings(container)
                      .UseCluster(cluster =>
            {
                cluster.ClusterName     = "playground";
                cluster.CurrentNodeName = "node1";
            })
                      .UseContractsFromAssemblies(new Assembly[] { Assembly.GetAssembly(typeof(RegisterAccount)), Assembly.GetAssembly(typeof(CreateUser)) });

            var projection_serviceLocator = new ServiceLocator(container, "Projection");

            cfg.UseProjectionConsumer("Projection", consumer => consumer
                                      .WithDefaultPublishers()
                                      .SetNumberOfConsumerThreads(5)
                                      .UseAzureServiceBusTransport(x =>
            {
                x.ClientId         = "162af3b1-ed60-4382-8ce8-a1199e0b5c31";
                x.ClientSecret     = "Jej7RF6wTtgTOoqhZokc+gROk2UovFaL+zG1YF2/ous=";
                x.ResourceGroup    = "mvclientshared.integration.all";
                x.SubscriptionId   = "b12a87ce-85b9-4780-afac-cc4295574db4";
                x.TenantId         = "a43960df-8c6f-4854-8628-7f61120c33f8";
                x.ConnectionString = "Endpoint=sb://mvclientshared-integration-all-srvbus-namespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=BQNROS3Pw8i5YIsoAclpWbkgHrZvUdPqlJdS/RCVc9c=";
                x.Namespace        = "mvclientshared-integration-all-srvbus-namespace";
            })
                                      //.UseRabbitMqTransport(x => x.Server = "docker-local.com")
                                      .UseProjections(h => h
                                                      .RegisterHandlerTypes(systemProjections, projection_serviceLocator.Resolve)
                                                      .UseCassandraProjections(x => x
                                                                               .SetProjectionsConnectionString("Contact Points=docker-local.com;Port=9042;Default Keyspace=cronus_sample_20180213")
                                                                               .SetProjectionTypes(systemProjections))
                                                      ));

            var systemSaga_serviceLocator = new ServiceLocator(container, "SystemSaga");

            cfg.UseSagaConsumer("SystemSaga", consumer => consumer
                                .WithDefaultPublishers()
                                .UseAzureServiceBusTransport(x =>
            {
                x.ClientId         = "162af3b1-ed60-4382-8ce8-a1199e0b5c31";
                x.ClientSecret     = "Jej7RF6wTtgTOoqhZokc+gROk2UovFaL+zG1YF2/ous=";
                x.ResourceGroup    = "mvclientshared.integration.all";
                x.SubscriptionId   = "b12a87ce-85b9-4780-afac-cc4295574db4";
                x.TenantId         = "a43960df-8c6f-4854-8628-7f61120c33f8";
                x.ConnectionString = "Endpoint=sb://mvclientshared-integration-all-srvbus-namespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=BQNROS3Pw8i5YIsoAclpWbkgHrZvUdPqlJdS/RCVc9c=";
                x.Namespace        = "mvclientshared-integration-all-srvbus-namespace";
            })
                                //.UseRabbitMqTransport(x => x.Server = "docker-local.com")
                                .ConfigureCassandraProjectionsStore(proj => proj
                                                                    .SetProjectionTypes(typeof(ProjectionBuilder).Assembly)
                                                                    .SetProjectionsConnectionString("Contact Points=docker-local.com;Port=9042;Default Keyspace=cronus_sample_20180213"))
                                .UseCassandraEventStore(eventStore => eventStore
                                                        .SetConnectionString(ConfigurationManager.ConnectionStrings["cronus_es"].ConnectionString)
                                                        .SetAggregateStatesAssembly(typeof(Elders.Cronus.Sample.Collaboration.Users.UserState)))
                                .UseSystemSagas(saga => saga.RegisterHandlerTypes(new List <Type>()
            {
                typeof(ProjectionBuilder)
            }, systemSaga_serviceLocator.Resolve))
                                );

            //var systemProjectionTypes = typeof(PersistentProjectionVersionHandler).Assembly.GetTypes().Where(x => typeof(IProjectionDefinition).IsAssignableFrom(x));
            //var systemProj_serviceLocator = new ServiceLocator(container, "SystemProj");
            //cfg.UseProjectionConsumer("SystemProj", consumer => consumer
            //     .WithDefaultPublishers()
            //     .UseRabbitMqTransport(x => x.Server = "docker-local.com")
            //     .UseSystemProjections(h => h
            //        .RegisterHandlerTypes(systemProjectionTypes, systemProj_serviceLocator.Resolve)
            //        .UseCassandraProjections(p => p
            //            .SetProjectionsConnectionString("Contact Points=docker-local.com;Port=9042;Default Keyspace=cronus_sample_20180213")
            //            .SetProjectionTypes(typeof(PersistentProjectionVersionHandler).Assembly)
            //                ))
            //    );

            (cfg as ISettingsBuilder).Build();
            host = container.Resolve <CronusHost>();
            host.Start();

            Console.WriteLine("Projections started");
            Console.ReadLine();
            host.Stop();
        }