using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using QM.Exchange.Interface; using System.Collections.Concurrent; using QM.Exchange.Core.ProcessProgram; namespace QM.Exchange.Core.Services { ///<summary> /// 功能描述:MessageQueueService 消息队列服务 /// 作 者:董雪夫 /// 编写日期:2017.8.22 ///</summary> public class MessageQueueService : IService { private static ConcurrentQueue<CommonMessage> queue; private bool _running; internal MessageQueueService() { queue = new ConcurrentQueue<CommonMessage>(); } /// <summary> /// 开启消息队列服务 /// </summary> public void Start() { _running = true; while (_running) { var msg = Dequeue(); if (msg != null) { CommandExecutor executor = new CommandFactory().CreateExecutor(msg); executor.Execute(); } System.Threading.Thread.Sleep(10); } } /// <summary> /// 关闭 /// </summary> public void Stop() { _running = false; } /// <summary> /// 把消息加入消息队列服务 /// </summary> /// <param name="msg">消息实体</param> public static void Enqueue(CommonMessage msg) { queue.Enqueue(msg); } /// <summary> /// 从消息队列服务读取服务 /// </summary> /// <returns>消息实体</returns> private static CommonMessage Dequeue() { CommonMessage msg; queue.TryDequeue(out msg); return msg; } } }