/// <summary> /// 保存事件,用于重试 /// </summary> /// <param name="element">执行元素</param> /// <param name="exception">异常信息</param> /// <param name="event">事件</param> public void EnqueueEvent(IEvent @event, EventExcutingElement element, Exception exception) { this.storager.Enqueue(element.EventContext, exception, @event, element.EventHandlerType); if (this.IsWaited) { this.Pulse(); } }
protected override bool ExcutingElementFilter(EventExcutingElement element) { if (element.EventHandlerType != this.eventHandlerType) { return(false); } return(base.ExcutingElementFilter(element)); }
public override void MakeEventHandlerInvoke <TEvent>(TEvent e, EventExcutingElement element) { try { base.MakeEventHandlerInvoke(e, element); } catch (Exception ex) { this.eventRecovery.EnqueueEvent(e, element, ex); throw new Exception("", ex); } }