/// <summary> /// 发送消息 /// </summary> /// <param name="doType">操作类型 ADD:增加 UPDATE:修改 DEL:删除</param> /// <param name="keyValue">主键字段的值(商品ID)</param> /// <param name="messageType">消息类型 1:普通商品(原平台商品) 2:掌合工厂商品 其他值:全部按普通商品处理</param> public void SendMes(OpenSeachMessageDoType doType, string keyValue, OpenSearchMessageType messageType) { Message m = new Message(); try { m.Label = "LuceneMes"; m.Body = doType.ToString() + "|" + keyValue + "|" + (int)messageType; this.mesqueue.Send(m); } catch (Exception ex) { //需要处理异常 LogHelper.WriteInfo(typeof(SendMessage), "方法名:OpenSearchMessage.SendMes" + "wzh" + "发送消息队列异常:" + ex.Message + " " + keyValue); } }
/// <summary> /// 发送消息 /// </summary> public void SendMes(string messageBody) { Message m = new Message(); try { m.Label = "LuceneMes"; m.Body = messageBody; this.mesqueue.Send(m); } catch (Exception ex) { //需要处理异常 LogHelper.WriteInfo(typeof(OpenSearchMessage), "方法名:OpenSearchMessage.SendMes" + "wzh" + "发送消息队列异常:" + ex.Message + ":" + messageBody); } }
/// <summary> /// 接收消息事件 /// </summary> /// <param name="message"></param> private void Consumer_Listener(IMessage message) { ITextMessage itMsg = (ITextMessage)message; //判断是否批量接收消息 if (!string.IsNullOrEmpty(itMsg.Text)) { //批量接收消息 RecueveMesToList(itMsg.Text); //批量接收消息至某阀值停止MQ连接 if (msgList.Count >= ReceiveThresholdNum) { _conn.Stop(); LogHelper.WriteInfo(typeof(HandleActiveMq <T>), "MQ连接停止!"); } } }
/// <summary> /// 开始(启动接收和处理消息) /// </summary> public void StartMQ() { #region 接收消息 ReceiveMessage(); LogHelper.WriteInfo(typeof(HandleActiveMq <T>), "消息接收启动成功!"); #endregion #region 处理消息 for (int i = 1; i <= HandleThreadNum; i++) { Thread handleThread = new Thread(HandleMesToList); handleThread.Name = "消息处理线程" + i.ToString(); handleThread.IsBackground = true; handleThread.Start(); LogHelper.WriteInfo(typeof(HandleActiveMq <T>), handleThread.Name + "启动成功!"); //追加到线程集合 thdList.Add(handleThread); } #endregion }
/// <summary> /// Post请求返回字符 /// </summary> /// <param name="url">请求地址</param> /// <param name="postData">请求数据</param> /// <returns>字符</returns> public static string PostResponse(string url, object obj) { HttpClient httpClient = new HttpClient(new HttpClientHandler() { AutomaticDecompression = DecompressionMethods.GZip }); HttpResponseMessage response = null; try { //using (HttpClient httpClient = new HttpClient()) //{ httpClient.MaxResponseContentBufferSize = 256000; httpClient.DefaultRequestHeaders.Add("user-agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36"); httpClient.CancelPendingRequests(); httpClient.DefaultRequestHeaders.Clear(); string postData = JsonConvertTool.SerializeObject(obj); HttpContent httpContent = new StringContent(postData); httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json"); Task <HttpResponseMessage> taskResponse = httpClient.PostAsync(url, httpContent); taskResponse.Wait(); response = taskResponse.Result; //using (HttpResponseMessage response = taskResponse.Result) //{ //HttpResponseMessage response = httpClient.PostAsync(url, httpContent).Result; if (response.IsSuccessStatusCode) { //Task<string> taskStr = response.Content.ReadAsStringAsync(); //taskStr.Wait(); //string result = taskStr.Result; Task <System.IO.Stream> taskStream = response.Content.ReadAsStreamAsync(); taskStream.Wait(); System.IO.Stream dataStream = taskStream.Result; System.IO.StreamReader reader = new System.IO.StreamReader(dataStream); string result = reader.ReadToEnd(); return(result); } else { LogHelper.WriteInfo(typeof(HttpClientHelper), "结果(Http):" + response.StatusCode + "内容:" + JsonConvertTool.SerializeObject(obj)); } //} return(null); //} } catch (Exception exception) { LogHelper.Error("结果:异常 内容:" + JsonConvertTool.SerializeObject(obj) + "ex:" + exception.Message, exception); return(null); } finally { if (response != null) { response.Dispose(); } if (httpClient != null) { httpClient.Dispose(); } } }