public IActionResult ManaualProcess(Guid messageId, string topic)
        {
            var message = MessageSvc.LoadMessage(messageId, topic);
            var msg     = new TextMessage()
            {
                MessageText = message.MessageText
            };

            msg.putHeaders(BuiltinKeys.TraceId, messageId.ToString());
            msg.putHeaders(BuiltinKeys.Topic, topic);
            Stopwatch stopwatch = new Stopwatch();
            IMonitor  monitor   = new SqlMonitor();

            try
            {
                var processor = new RestApiProcessor();
                stopwatch.Restart();
                var result = (processor.Process(msg)).Result;
                stopwatch.Stop();
                MessageSuccessEventArgs args = new MessageSuccessEventArgs(msg, stopwatch.ElapsedMilliseconds);
                monitor.onEvent(args);
                return(Json(new { Success = true, Message = "处理成功!" }));
            }
            catch (Exception ex)
            {
                stopwatch.Stop();
                MessageExceptionEventArgs args = new MessageExceptionEventArgs(msg, ex, stopwatch.ElapsedMilliseconds);
                monitor.onEvent(args);
            }
            return(Json(new { Success = true, Message = "处理失败!" }));
        }
Example #2
0
        private static string GetMessageExceptionInfo(MessageExceptionEventArgs e)
        {
            var errorInfo = string.Format(" Message: {0}\n Exception: {1}\n  {2}",
                                          e.Message, e.Exception.GetType().FullName, e.Exception.Message);

            return(errorInfo);
        }
        private void Consumer_Received(object sender, BasicDeliverEventArgs e)
        {
            var      body    = e.Body;
            var      msgStr  = Encoding.UTF8.GetString(body);
            IMessage message = JsonConvert.DeserializeObject <TextMessage>(msgStr);

            if (processor == null)
            {
                throw new MessageTransitException("Processor can not be null!");
            }
            try
            {
                stopwatch.Restart();
                bool result = (processor.Process(message)).Result;
                stopwatch.Stop();

                if (result)
                {
                    channel.BasicAck(e.DeliveryTag, false);
                    if (monitors != null && monitors.Count > 0)
                    {
                        MessageSuccessEventArgs args = new MessageSuccessEventArgs(message, stopwatch.ElapsedMilliseconds);
                        monitors.ForEach(m => m.onEvent(args));
                    }
                }
                else
                {
                    channel.BasicReject(e.DeliveryTag, false);
                    if (monitors != null && monitors.Count > 0)
                    {
                        MessageExceptionEventArgs args = new MessageExceptionEventArgs(message, new Exception("Proccess Failed!"), stopwatch.ElapsedMilliseconds);
                        monitors.ForEach(m => m.onEvent(args));
                    }
                }
            }
            catch (Exception ex)
            {
                stopwatch.Stop();
                channel.BasicReject(e.DeliveryTag, false);
                if (monitors != null && monitors.Count > 0)
                {
                    MessageExceptionEventArgs args = new MessageExceptionEventArgs(message, ex, stopwatch.ElapsedMilliseconds);
                    monitors.ForEach(m => m.onEvent(args));
                }
            }
        }
Example #4
0
        bool DoExecute(MessageResult ctx, IObserverHandler <IMessage> handler, AtomicInteger barrier)
        {
            var e = new MessageReceivingEventArgs(ctx, handler.Target);

            try
            {
                ListnerManager.OnReceiving(e);
                if (!e.Ignored)
                {
                    ctx.results.Add(DelegateInvoker.Invoke <IMessage>(handler, ctx.Request.Sender, ctx.Request.ToMessage()));
                }


                return(true);
            }
            catch (Exception ex)
            {
                var re = new MessageExceptionEventArgs(ctx, ex);
                ListnerManager.OnReceivingException(re);
                ctx.InnerExceptions.Add(ex);
                return(!re.Canceled);
            }
            finally
            {
                barrier--;

                if (barrier == 0)
                {
                    ListnerManager.OnReceived(new MessageEventArgs(ctx));
                    ListnerManager.OnSent(e);
                    OnCompleted(ctx);
                }
                else
                {
                    ListnerManager.OnReceived(new MessageEventArgs(ctx));
                }

                e = null;
            }
        }
Example #5
0
        public void onEvent(MessageEventArgs e)
        {
            if (e is MessageSuccessEventArgs)
            {
                MessageSuccessEventArgs args = e as MessageSuccessEventArgs;
                MessageSvc.UpdateMessageStatusToSuccess(Guid.Parse(args.message.Headers[BuiltinKeys.TraceId]), args.message.Headers[BuiltinKeys.Topic], args.milliseconds);
            }
            else if (e is MessageExceptionEventArgs)
            {
                MessageExceptionEventArgs args = e as MessageExceptionEventArgs;
                MessageSvc.UpdateMessageStatusToFail(new ProcessFailRecord()
                {
                    MessageId  = Guid.Parse(args.message.Headers[BuiltinKeys.TraceId]),
                    Topic      = args.message.Headers[BuiltinKeys.Topic],
                    FailRecord = args.ex.Message,
                    TimePeriod = args.milliseconds
                });

                #region 邮件通知


                #endregion
            }
        }
Example #6
0
 private static void computationalNode_MessageHandlingException(object sender, MessageExceptionEventArgs e)
 {
     _logger.Warn("Message handling exception:\n" + GetMessageExceptionInfo(e));
 }
Example #7
0
 private static void computationalNode_MessageSendingException(object sender, MessageExceptionEventArgs e)
 {
     _logger.Error("Message sending exception:\n" + GetMessageExceptionInfo(e));
 }
Example #8
0
 static void computationalClient_MessageHandlingException(object sender, MessageExceptionEventArgs e)
 {
     Logger.Warn(e.Message + "\n" + e.Exception);
 }
 public void OnReceivingException(MessageExceptionEventArgs e)
 {
     ForEach(item => item.OnReceivingException(e));
 }
Example #10
0
        bool DoExecute(MessageResult ctx, IObserverHandler<IMessage> handler, AtomicInteger barrier)
        {
            var e = new MessageReceivingEventArgs (ctx, handler.Target);
            try
            {
                ListnerManager.OnReceiving(e);
                if (!e.Ignored)
                    ctx.results.Add(DelegateInvoker.Invoke<IMessage>(handler, ctx.Request.Sender, ctx.Request.ToMessage()));

                
                return true;
            }
            catch (Exception ex)
            {
                var re = new MessageExceptionEventArgs (ctx,ex);
                ListnerManager.OnReceivingException(re);
                ctx.InnerExceptions.Add(ex);
                return !re.Canceled; 
            }
            finally
            {
                barrier--;

                if (barrier == 0)
                {
                    ListnerManager.OnReceived(new MessageEventArgs(ctx));
                    ListnerManager.OnSent(e);
                    OnCompleted(ctx);
                }
                else
                    ListnerManager.OnReceived(new MessageEventArgs(ctx));
                
                e = null;
            }
        }
Example #11
0
 public override void OnReceivingException(MessageExceptionEventArgs e)
 {
 }