private void ProcessMessageThread() { ThreadProcessor.Auto(); log.InfoFormat("开始对终端消息进行应答处理 {0}", Thread.CurrentThread.ManagedThreadId); Tuple <AsyncSocketConnection, TPKGHead> rd = null; HiPerfTimer timer = new HiPerfTimer(); while (_isWorking) { if (ackQueue.TryDequeue(out rd) == false)//开始从对列中取接收到的数据进行处理 { Thread.Sleep(50); continue; } try { //服务端 timer.Start(); FireWaitHandle(rd.Item2); var rs = PacketProcessorManager.DoProcess(rd.Item1, rd.Item2).GetAwaiter().GetResult(); if (rd.Item2.Flags.HasFlag(TPKGHeadFlags.CON)) { PacketProcessorBase.SendCommonResponseMessage(rd.Item1, rd.Item2, rs == true ? 0 : 1); } timer.Stop(); packetCounts.AddOrUpdate(rd.Item2.CommandId, 1, (o, v) => ++ v); packetTime.AddOrUpdate(rd.Item2.CommandId, timer.Duration, (o, v) => v + timer.Duration); packetCounts30s.AddOrUpdate(rd.Item2.CommandId, 1, (o, v) => ++ v); packetTime30s.AddOrUpdate(rd.Item2.CommandId, timer.Duration, (o, v) => v + timer.Duration); } catch (Exception ex) { log.Error(ex); } Interlocked.Increment(ref processedMessageCount); } }
public MqttSampleService(PacketProcessorManager processorManager, MqttClientSessionManager sessionManager, ILoggerFactory loggerFactory) : base(processorManager, sessionManager, loggerFactory) { logger = loggerFactory.CreateLogger <MqttSampleService>(); }