コード例 #1
0
        private string Notify(HttpContext context)
        {
            RequestProfile.RequestType = "JinRi.Notify.ReceiverService.ReceiveHandler";
            string data = context.Request["data"];

            if (string.IsNullOrEmpty(data))
            {
                byte[] bs = new byte[context.Request.InputStream.Length];
                context.Request.InputStream.Read(bs, 0, bs.Length);
                data = Encoding.UTF8.GetString(bs);
            }
            NotifyMessage notifyMsg;
            string        result = "";

            try
            {
                Handle.Info(string.Format("请求信息,data【{0}】", data), "请求开始");
                Check.CanDeserializeObject(data, "请求参数data", out notifyMsg);
                notifyMsg.NotifyData      = HttpUtility.UrlDecode(notifyMsg.NotifyData);//编码消除 '=','&'特殊字符
                RequestProfile.RequestKey = notifyMsg.MessageKey;
                NotifyMessageResult response = DelegateHelper.Invoke <NotifyMessage, NotifyMessageResult>(m_receiveFacade.Receive, notifyMsg, MetricsKeys.ReceiveHandler);
                result = response.Success ? "Success" : "Failed";
                MetricsKeys.ReceiveHandler.MeterMark("Success");
            }
            catch (Exception ex)
            {
                MetricsKeys.ReceiveHandler.MeterMark("Error");
                Handle.Fatal(string.Format("序列化NotifyMessage类异常,ex:{0}", ex.GetString()));
                result = "Failed";
            }
            return(result);
        }
コード例 #2
0
        public NotifyMessageResult ReceiveList(List <NotifyMessage> list)
        {
            Check.IsNull(list, "List<NotifyMessage> 为空");
            list.ForEach(x => Receive(x));
            NotifyMessageResult response = new NotifyMessageResult();

            response.Success = true;
            return(response);
        }
コード例 #3
0
 private bool SendOrder(NotifyMessage message, out string errMsg)
 {
     try
     {
         NotifyMessageResult result = m_client.Notify(message);
         errMsg = result.ErrMsg;
         return(result.Success);
     }
     catch (Exception ex)
     {
         errMsg = "发送订单信息到消息接收中心-发送异常";
         if (m_client.State == CommunicationState.Closed ||
             m_client.State == CommunicationState.Faulted)
         {
             m_client = new ReceiveServiceClient();
         }
         Process.Error(message.MessageKey, "发送订单信息到消息接收中心", "SendOrder", message.MessageKey, string.Format("异常,ex【{0}】", ex.GetString()), "");
         return(false);
     }
 }
コード例 #4
0
        public NotifyMessageResult Receive(NotifyMessage message)
        {
            Check.IsNull(message, "NotifyMessage为空");
            bool isSendToBuffer      = false;
            bool isDirectSendMessage = false;

            InitNotifyMessage(message);
            Process.Debug(message.MessageId, "消息接收中心", "Receive", message.MessageKey, string.Format("消息接收内容:{0}", JsonConvert.SerializeObject(message)), "");
            NotifyMessageResult response;
            string errMsg = "";

            if (!Valid(message, out errMsg))
            {
                response         = new NotifyMessageResult();
                response.Success = false;
                response.ErrMsg  = errMsg;
                return(response);
            }
            if (ReceiveServiceSetting.EnableJudgeHasReceived && HasReceived(message))
            {
                Process.Debug(message.MessageId, "消息接收中心", "Receive", message.MessageKey, string.Format("此类型消息已经接收过了,消息接收内容:{0}", JsonConvert.SerializeObject(message)), "");
                response         = new NotifyMessageResult();
                response.Success = true;
                response.ErrMsg  = string.Format("此类型消息已经接收过了,MessageId: {0}", message.MessageId);
                return(response);
            }
            if (ReceiveServiceSetting.SystemStatus == SystemStatusEnum.Stopping ||
                ReceiveServiceSetting.SystemStatus == SystemStatusEnum.Stopped)
            {
                SendToMQ(message);
            }
            else
            {
                switch (message.MessagePriority)
                {
                case MessagePriorityEnum.High:
                    isDirectSendMessage = ReceiveServiceSetting.IsDirectRouteHighToBuilderService;
                    if (_highPool != null)
                    {
                        isSendToBuffer = true;
                    }
                    break;

                case MessagePriorityEnum.Middle:
                    isDirectSendMessage = ReceiveServiceSetting.IsDirectRouteMiddleToBuilderService;
                    if (_middlePool != null)
                    {
                        isSendToBuffer = true;
                    }
                    break;

                case MessagePriorityEnum.Normal:
                    isDirectSendMessage = ReceiveServiceSetting.IsDirectRouteNormalToBuilderService;
                    if (_normalPool != null)
                    {
                        isSendToBuffer = true;
                    }
                    break;

                case MessagePriorityEnum.Low:
                    isDirectSendMessage = ReceiveServiceSetting.IsDirectRouteLowToBuilderService;
                    if (_lowPool != null)
                    {
                        isSendToBuffer = true;
                    }
                    break;
                }
                if (!isDirectSendMessage)
                {
                    if (isSendToBuffer)
                    {
                        switch (message.MessagePriority)
                        {
                        case MessagePriorityEnum.High:
                            _highPool.Write(message);
                            break;

                        case MessagePriorityEnum.Middle:
                            _middlePool.Write(message);
                            break;

                        case MessagePriorityEnum.Normal:
                            _normalPool.Write(message);
                            break;

                        case MessagePriorityEnum.Low:
                            _lowPool.Write(message);
                            break;
                        }
                    }
                    else
                    {
                        SendToMQ(message);
                    }
                }
                else
                {
                    SendToBuilderService(message);
                }
            }
            response         = new NotifyMessageResult();
            response.Success = true;
            response.ErrMsg  = string.Format("消息接收成功,MessageId:{0}", message.MessageId);
            return(response);
        }
コード例 #5
0
        public NotifyMessageResult Receive(NotifyMessage message)
        {
            Check.IsNull(message, "NotifyMessage为空");
            bool isSendMessage = true;

            switch (message.MessagePriority)
            {
            case MessagePriorityEnum.High:
                if (_highPool != null)
                {
                    _highPool.Write(message);
                }
                else
                {
                    isSendMessage = false;
                }
                break;

            case MessagePriorityEnum.Middle:
                if (_middlePool != null)
                {
                    _middlePool.Write(message);
                }
                else
                {
                    isSendMessage = false;
                }
                break;

            case MessagePriorityEnum.Normal:
                if (_normalPool != null)
                {
                    _normalPool.Write(message);
                }
                else
                {
                    isSendMessage = false;
                }
                break;

            case MessagePriorityEnum.Low:
                if (_lowPool != null)
                {
                    _lowPool.Write(message);
                }
                else
                {
                    isSendMessage = false;
                }
                break;
            }
            if (!isSendMessage)
            {
                Build(message);
            }

            NotifyMessageResult response = new NotifyMessageResult();

            response.Success = true;
            return(response);
        }