示例#1
0
        public async Task OnWorkSucceededAsync(IUnitOfWork unitOfWork)
        {
            var dispatchResult = await asyncEventQueueDispatcher.DispatchToQueuesAsync(eventMessages, null, null);

            eventMessages.Clear();

            if (dispatchResult.EnqueuedEventsAsyncProcessed.Count > 0)
            {
                await asyncEventProcessor.EnqueueForAsyncProcessingAsync(dispatchResult.EnqueuedEventsAsyncProcessed, null);
            }

            if (dispatchResult.EnqueuedEventsSyncProcessed.Count > 0)
            {
                await asyncEventProcessor.ProcessSynchronously(dispatchResult.EnqueuedEventsSyncProcessed);
            }
        }
示例#2
0
        public async Task CatchUpAsync()
        {
            var nondispatchedEvents = (await readRepository
                                       .Where <EventStreamRow>(x => !x.IsDispatchedToAsyncQueues)
                                       .OrderBy(x => x.StreamId)
                                       .ThenBy(x => x.StreamSequenceNumber)
                                       .ToListAsync(readRepository))
                                      .Select(x =>
                                              new EventStoreRecordAdapter(x, eventSerializer)).ToList();

            if (nondispatchedEvents.Count > 0)
            {
                var messages = nondispatchedEvents.Select(EventStoreEventMessage.FromRecord);
                await asyncEventQueueDispatcher.DispatchToQueuesAsync(messages, null, null);
            }
        }
示例#3
0
        public async Task CatchUpAsync()
        {
            var nondispatchedEvents = (await readRepository
                                       .Where <ExternalEventRecord>(x => !x.IsDispatchedToAsyncQueues)
                                       .ToListAsync(readRepository));

            if (nondispatchedEvents.Count > 0)
            {
                var messages = nondispatchedEvents.Select(x =>
                {
                    var @event = eventSerializer.DeserializeEvent(x.EventJson,
                                                                  new VersionedTypeId(x.EventName, x.EventVersion));
                    var metadata = eventSerializer.DeserializeEventMetadata(x.MetadataJson);
                    return(EventMessage.FromEvent(@event, metadata));
                });

                await asyncEventQueueDispatcher.DispatchToQueuesAsync(messages, null, null);
            }
        }