public async Task Handle(T @event) { using (var scope = PaymentsCompositionRoot.BeginLifetimeScope()) { using (var connection = scope.Resolve <ISqlConnectionFactory>().GetOpenConnection()) { string type = @event.GetType().FullName; var data = JsonConvert.SerializeObject(@event, new JsonSerializerSettings { ContractResolver = new AllPropertiesContractResolver() }); var sql = "INSERT INTO [payments].[InboxMessages] (Id, OccurredOn, Type, Data) " + "VALUES (@Id, @OccurredOn, @Type, @Data)"; await connection.ExecuteScalarAsync(sql, new { @event.Id, @event.OccurredOn, type, data }); } } }
private static void SubscribeToIntegrationEvents(ILogger logger) { var eventBus = PaymentsCompositionRoot.BeginLifetimeScope().Resolve <IEventsBus>(); SubscribeToIntegrationEvent <MeetingGroupProposalAcceptedIntegrationEvent>(eventBus, logger); SubscribeToIntegrationEvent <NewUserRegisteredIntegrationEvent>(eventBus, logger); SubscribeToIntegrationEvent <MeetingAttendeeAddedIntegrationEvent>(eventBus, logger); }
internal static async Task Execute(ICommand command) { using (var scope = PaymentsCompositionRoot.BeginLifetimeScope()) { var mediator = scope.Resolve <IMediator>(); await mediator.Send(command); } }
internal static async Task <TResult> Execute <TResult>(ICommand <TResult> command) { using (var scope = PaymentsCompositionRoot.BeginLifetimeScope()) { var mediator = scope.Resolve <IMediator>(); return(await mediator.Send(command)); } }
public async Task <TResult> ExecuteQueryAsync <TResult>(IQuery <TResult> query) { using (var scope = PaymentsCompositionRoot.BeginLifetimeScope()) { var mediator = scope.Resolve <IMediator>(); return(await mediator.Send(query)); } }
public void Start() { long?actualPosition; using (var scope = PaymentsCompositionRoot.BeginLifetimeScope()) { var checkpointStore = scope.Resolve <ICheckpointStore>(); actualPosition = checkpointStore.GetCheckpoint(SubscriptionCode.All); } _streamStore.SubscribeToAll(actualPosition, StreamMessageReceived); }
private static async Task StreamMessageReceived( IAllStreamSubscription subscription, StreamMessage streamMessage, CancellationToken cancellationToken) { var type = DomainEventTypeMappings.Dictionary[streamMessage.Type]; var jsonData = await streamMessage.GetJsonData(cancellationToken); var domainEvent = JsonConvert.DeserializeObject(jsonData, type) as IDomainEvent; using var scope = PaymentsCompositionRoot.BeginLifetimeScope(); var projectors = scope.Resolve <IList <IProjector> >(); foreach (var projector in projectors) { await projector.Project(domainEvent); } var checkpointStore = scope.Resolve <ICheckpointStore>(); await checkpointStore.StoreCheckpoint(SubscriptionCode.All, streamMessage.Position); }