/// <summary> /// Adds the Parbad Virtual Gateway to Parbad services. /// </summary> /// <param name="builder"></param> public static IGatewayConfigurationBuilder <ParbadVirtualGateway> AddParbadVirtual(this IGatewayBuilder builder) { if (builder == null) { throw new ArgumentNullException(nameof(builder)); } builder.Services.TryAddTransient <ParbadVirtualGateway>(); builder.Services.TryAddTransient <IParbadVirtualGatewayMiddlewareInvoker, ParbadVirtualGatewayMiddlewareInvoker>(); builder.AddGatewayAccountProvider <ParbadVirtualGatewayAccount>(); var gatewayConfigurationBuilder = new GatewayConfigurationBuilder <ParbadVirtualGateway>(builder.Services); gatewayConfigurationBuilder .WithAccounts(accounts => { accounts .AddInMemory(account => { }); }); return(gatewayConfigurationBuilder); }
static void Main() { //var cnt = ConnectionSettings // .Create() // .SetDefaultUserCredentials(new UserCredentials("admin", "changeit")) // .Build(); //var eventStoreConnection = EventStoreConnection.Create(cnt, new IPEndPoint(IPAddress.Loopback, 1113)); //eventStoreConnection.ConnectAsync().Wait(); //eventStoreConnection.SubscribeToStreamFrom( // stream: "Aggregate"+"View", // lastCheckpoint: StreamCheckpoint.StreamStart, // resolveLinkTos: true, // eventAppeared: (upSubscription, @event) => // { // var eventType = Type.GetType(@event.Event.EventType); // }, userCredentials: new UserCredentials("admin", "changeit")); //Console.ReadKey(); Mapper.CreateMap <AggregateCreated, AnotherAggregateCreated>() .ConstructUsing(created => new AnotherAggregateCreated(created.Identity)) .ForMember(x => x.Identity, x => x.Ignore()); Mapper.CreateMap <AggregateNameCreated, AggregateNameCreated>() .ConstructUsing(created => new AggregateNameCreated(created.Identity, created.Name)) .ForMember(x => x.Identity, x => x.Ignore()) .ForMember(x => x.Name, x => x.Ignore()); Mapper.CreateMap <AnotherAggregateCreated, AggregateCreated>() .ConstructUsing(created => new AggregateCreated(created.Identity)) .ForMember(x => x.Identity, x => x.Ignore()); //using (MemoryStream tempStream = new MemoryStream()) //{ // BinaryFormatter binFormatter = new BinaryFormatter(null, // new StreamingContext(StreamingContextStates.Clone)); // binFormatter.Serialize(tempStream, envel); // tempStream.Seek(0, SeekOrigin.Begin); // var clone = binFormatter.Deserialize(tempStream); //} //var envelDto = new EnvelopeDto<C> //{ // Body = envel.Body, // IsRedelivered = false, // MessageId = envel.MessageId //}; //var h = JsonConvert.SerializeObject(envelDto); //var t = (EnvelopeDto<C>)JsonConvert.DeserializeObject(h, typeof(EnvelopeDto<C>)); //Envelope<C> qq = t; //var envAc = Activator.CreateInstance(typeof (Envelope<C>), t.MessageId, t.Body, false); var containerBuilder = new ContainerBuilder(); containerBuilder.RegisterModule <Cqrs.Messaging.Rabbitmq.TypeRegistrationModule>(); containerBuilder.RegisterModule <Cqrs.Domain.Eventing.TypeRegistrationModule>(); containerBuilder.RegisterModule <Commands.Core.TypeRegistrationModule>(); containerBuilder.RegisterModule <Cqrs.ObjectMapping.TypeRegistrationModule>(); containerBuilder.RegisterModule <Cqrs.AntiCorruption.TypeRegistrationModule>(); containerBuilder.RegisterModule <Cqrs.Messaging.Core.TypeRegistrationModule>(); containerBuilder.RegisterModule <Cqrs.Persistance.EventSourcing.Core.TypeRegistrationModule>(); containerBuilder.RegisterModule <Cqrs.Persistance.EventSourcing.EventStore.TypeRegistrationModule>(); containerBuilder.RegisterModule <Cqrs.AntiCorruption.TypeRegistrationModule>(); containerBuilder.RegisterType <SnapshotDataContext>() .As <ISnapshotDataContext>() .SingleInstance(); containerBuilder.RegisterType <CreateAggregateCommandHandler>() .AsImplementedInterfaces().InstancePerDependency(); containerBuilder.RegisterType <ChangeAggregateNameCommandHandler>() .AsImplementedInterfaces().InstancePerDependency(); containerBuilder.RegisterType <AggregateCreatedEventHandler>() .AsImplementedInterfaces().InstancePerDependency(); containerBuilder.RegisterType <AggregateNameEventHandler>() .AsImplementedInterfaces().InstancePerDependency(); containerBuilder.RegisterType <AggregateProjection>() .AsImplementedInterfaces().InstancePerDependency(); //var j = typeof(RestoreEventSourcedAggregateCommandHandler<,,>) // .GetInterfaces().ToList(); //containerBuilder.RegisterGeneric(typeof(RestoreEventSourcedAggregateCommandHandler<,,>)) // .As(typeof(ICommandHandler<,>)) // .AsSelf() // .InstancePerDependency(); var container = containerBuilder.Build(); var ch = container.Resolve <ICommandHandler <RestoreEventSourcedAggregateCommand <AggregateIdentity, AggregateSnapshot>, RestoreAggregateCommandResult <Aggregate> > >(); var autofacAdapter = new AutofacLocator(container); var gatewayFactory = container.Resolve <IGatewayFactory>(); var gateWayBuilder = new GatewayConfigurationBuilder(gatewayFactory, autofacAdapter); var gateWay = gateWayBuilder .WithEventSubscriberThreads(10) .WithCommandHandlerThreads(10) .WithPrefetch(50) .Build(); gateWay .ForCommands() .Handle <C>() .Handle <Ch>(); gateWay.ForEvents() .Subscribe <AnotherAggregateCreated>() .Subscribe <AggregateNameCreated>(); ProjectionGatewayConfigurationBuilder .Create(autofacAdapter) .For("Aggregate") .SubscribeTo <AggregateCreated>() .SubscribeTo <AggregateNameCreated>() .Build() .UseEventStore( ConnectionSettings.Create() .SetDefaultUserCredentials(new UserCredentials("admin", "changeit")) .KeepRetrying() .UseConsoleLogger() .Build(), new IPEndPoint(IPAddress.Loopback, 2113), new IPEndPoint(IPAddress.Loopback, 1113) ); // var userCredentials = new UserCredentials("admin", "changeit"); // var projectionManager = new ProjectionsManager(new ConsoleLogger(), new IPEndPoint(IPAddress.Loopback, 2113), new TimeSpan(1, 0, 0)); // var byCategoryProjectionStatus = ((JObject)JsonConvert.DeserializeObject(projectionManager.GetStatusAsync("$by_category", userCredentials).Result))["status"].ToString(); // var streamByCategoryProjectionStatus = ((JObject)JsonConvert.DeserializeObject(projectionManager.GetStatusAsync("$stream_by_category", userCredentials).Result))["status"].ToString(); // if (byCategoryProjectionStatus == "Stopped") // { // projectionManager.EnableAsync("$by_category", userCredentials).Wait(); // } // if (streamByCategoryProjectionStatus == "Stopped") // { // projectionManager.EnableAsync("$stream_by_category", userCredentials).Wait(); // } // const string projectionQuery = @"fromCategory('AggregateRoot') // .foreachStream() // .whenAny(function(state, event){ // linkTo('AggregateBoundedContext', event); // })"; // string aggregateCreatedProjectionQuery = @"fromCategory('AggregateRoot') // .foreachStream() // .when({'" + typeof(AggregateCreated).FullName + "':" + // "function(state, event){linkTo('AggregateCreatedView', event);}" + // "});"; // string aggregateNameCreatedProjectionQuery = @" //options({ //processingLag: 500 //}); //fromCategory('AggregateRoot') // .foreachStream() // .when({'" + typeof(AggregateNameCreated).FullName + "':" + // "function(state, event){linkTo('AggregateNameCreatedView', event);}" + // "});"; // projectionManager.CreateContinuousAsync("AggregateProjection", projectionQuery, userCredentials).Wait(); //projectionManager.CreateContinuousAsync("AggregateCreatedProjection", aggregateCreatedProjectionQuery, userCredentials).Wait(); //projectionManager.CreateContinuousAsync("AggregateNameCreatedProjection", aggregateNameCreatedProjectionQuery, userCredentials).Wait(); Console.ReadKey(); var bus = container.Resolve <ICommandBus>(); var aggregateId = Guid.NewGuid(); var anotherAggregateId = Guid.NewGuid(); var createAggregateCommand = new C(new AggregateIdentity(aggregateId), "NewAggregate"); bus.Dispatch(createAggregateCommand); //bus.Dispatch(new C(new AggregateIdentity(Guid.NewGuid()), "AAA")); Console.ReadKey(); var changeAggregateNameCommand = new Ch(2, new AggregateIdentity(aggregateId), "ChangedName"); bus.Dispatch(changeAggregateNameCommand); Console.ReadKey(); var changeAggregateNameCommand1 = new Ch(3, new AggregateIdentity(aggregateId), "ChangedName1"); bus.Dispatch(changeAggregateNameCommand1); Console.ReadKey(); var createAggregateCommand1 = new C(new AggregateIdentity(anotherAggregateId), "NewAggregate"); bus.Dispatch(createAggregateCommand1); Console.ReadKey(); var changeAggregateNameCommand13 = new Ch(2, new AggregateIdentity(anotherAggregateId), "ChangedName"); bus.Dispatch(changeAggregateNameCommand13); Console.ReadKey(); var changeAggregateNameCommand12 = new Ch(3, new AggregateIdentity(anotherAggregateId), "ChangedName1"); bus.Dispatch(changeAggregateNameCommand12); Console.ReadKey(); }