/// <summary> /// 发布消息 /// </summary> /// <param name="msg"></param> /// <returns></returns> public static void Publish(this IEventMsg msg) { lock (_sync) { Bus.Publish(msg); } }
/// <summary> /// 发布消息 /// </summary> /// <param name="msg"></param> /// <returns></returns> public static async Task PublishAsync(this IEventMsg msg) {//TODO:优化并发性能. lock (_sync) { Bus.PublishAsync(msg).Wait(); } }
public void ErrorHandler(IEventMsg msg, Exception ex) { if (msg is T) { ErrorHandler(msg as T, ex); } }
public ResultModel Handler(IEventMsg msg) { if (msg is T) { return(Handler(msg as T)); } return(ResultModel.Failed("事件消息类型错误")); }
private void EventHander(IEventMsg msg) { //将事件消息分发到事件总线var eventMsg = msg as EventMsgModel; Events .Where(m => msg.Event == m.Event) //TODO:直接使用泛型参数分发消息.不使用枚举.能节约一个定义枚举的操作. // .AsParallel() .ToList() .ForEach( m => { try { var result = m.Handler(msg); if (!result.Succeed) { Log.Warn(result.Msg); } } catch (Exception ex) { m.ErrorHandler(msg, ex); } }); }
public static TimedTaskMsg SetMsg(this TimedTaskMsg msg, IEventMsg value) { msg.MsgTypeFullName = value.GetType().FullName; msg.MsgJson = value.ToJson(); return(msg); }