protected bool ProcessGetForQueue(MQProtocolSession session, MQDataInfo mQDataInfo) { try { string data = mQDataInfo.Body.DecodeToString(); mqServer.Logger.Info($"客户端:【{session.RemoteEndPoint}】消息类型:【{mQDataInfo.Type}】{CommanCode.GetForQueue} :【{mQDataInfo}】消息内容:【{data}】"); string msgs = ""; //Newtonsoft.Json.JsonConvert.SerializeObject(mqServer.TopicMessageQueueDict); var msg = MQTools.GetSendMessage((ushort)CommanCode.GetForQueue, msgs, 0); var r = session.TrySend(msg); mqServer.Logger.Info($"客户端:【{session.RemoteEndPoint}】请求队列 【{msgs}】【确认】消息结果:【{r}】"); return(true); } catch (Exception e) { mqServer.Logger.Error(mQDataInfo, new Exception("处理队列确认消息失败", e)); session.Close(CSuperSocket.SocketBase.CloseReason.InternalError); return(false); } }
protected bool ProcessPullMessage(MQProtocolSession session, MQDataInfo mQDataInfo) { try { string data = mQDataInfo.Body.DecodeToString(); mqServer.Logger.Info($"客户端:【{session.RemoteEndPoint}】消息类型:【{mQDataInfo.Type}】{CommanCode.PullMessage} :【{mQDataInfo}】消息内容:【{data}】"); MQDataInfo msg; if (session.PeekAckMessageQueue(out msg)) { byte[] buffer; msg.GetSendByte(out buffer); bool r = session.TrySend(buffer, 0, buffer.Length); mqServer.Logger.Info($"客户端:【{session.RemoteEndPoint}】拉取 【{msg}】【确认】消息结果:【{r}】队列:【{session.AckMessageQueueCount}】"); } return(true); } catch (Exception e) { mqServer.Logger.Error(mQDataInfo, new Exception("处理队列确认消息失败", e)); session.Close(CSuperSocket.SocketBase.CloseReason.InternalError); return(false); } }