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); }
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); }
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); } }
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); }
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); }