示例#1
0
        public override Task Execute(RetryEventTaskParams taskConfig)
        {
            var type    = Type.GetType(taskConfig.ProcessorType);
            var handler = _serviceProvider.GetService(type) as IDomainEventsHandler;

            // processor = null :'(
            if (handler != null)
            {
                try
                {
                    handler.HandleEvent(taskConfig.Record);
                }
                catch (Exception ex)
                {
                    IDomainEventsFaultHandler faultHandler = null;
                    try
                    {
                        faultHandler = _serviceProvider.GetService <IDomainEventsFaultHandler>();
                    }
                    catch
                    {
                    }
                    faultHandler?.Handle(type, taskConfig.Record);
                    //Events processor will add a retry
                }
            }
            return(Task.CompletedTask);
        }
示例#2
0
 public DomainEventsProcessor(IDomainEventsHandler handler, ICheckpointManager checkpointManager, IDomainEventsFaultHandler faultHandler = null)
 {
     Guard.ArgumentNotNull(handler, nameof(handler));
     Guard.ArgumentNotNull(checkpointManager, nameof(checkpointManager));
     if (faultHandler == null)
     {
         faultHandler = new DoNothingFaultHandler();
     }
     _handler          = handler;
     _faultHandler     = faultHandler;
     CheckpointManager = checkpointManager; // ?? new InMemoryCheckpointManager();
 }