Пример #1
0
 /// <summary>
 /// 发布消息
 /// </summary>
 /// <param name="msg"></param>
 /// <returns></returns>
 public static void Publish(this IEventMsg msg)
 {
     lock (_sync)
     {
         Bus.Publish(msg);
     }
 }
Пример #2
0
 /// <summary>
 /// 发布消息
 /// </summary>
 /// <param name="msg"></param>
 /// <returns></returns>
 public static async Task PublishAsync(this IEventMsg msg)
 {//TODO:优化并发性能.
     lock (_sync)
     {
         Bus.PublishAsync(msg).Wait();
     }
 }
Пример #3
0
 public void ErrorHandler(IEventMsg msg, Exception ex)
 {
     if (msg is T)
     {
         ErrorHandler(msg as T, ex);
     }
 }
Пример #4
0
 public ResultModel Handler(IEventMsg msg)
 {
     if (msg is T)
     {
         return(Handler(msg as T));
     }
     return(ResultModel.Failed("事件消息类型错误"));
 }
Пример #5
0
 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);
         }
     });
 }
Пример #6
0
 public static TimedTaskMsg SetMsg(this TimedTaskMsg msg, IEventMsg value)
 {
     msg.MsgTypeFullName = value.GetType().FullName;
     msg.MsgJson         = value.ToJson();
     return(msg);
 }