/// <summary> /// 消息队列测试(支持多消费者) /// </summary> /// <param name="client"></param> /// <returns></returns> internal static bool TestCase(AutoCSer.CacheServer.Client client) { string name = "MesssageQueueConsumers"; #region 除名称为 MesssageQueueConsumers 的缓存数据,防止未处理数据对测试验证产生副作用 client.RemoveDataStructure(name); #endregion #region 创建名称为 MesssageQueueConsumers 的消息队列 QueueConsumers <int> queue = client.GetOrCreateDataStructure <QueueConsumers <int> >(name).Value; if (queue == null) { return(false); } #endregion #region 消息队列添加消息 2 ReturnValue <bool> isEnqueue = queue.Enqueue(2); if (!isEnqueue.Value) { return(false); } #endregion isEnqueue = queue.Enqueue(6); if (!isEnqueue.Value) { return(false); } isEnqueue = queue.Enqueue(4); if (!isEnqueue.Value) { return(false); } #region 初始化消息消费状态(仅用于当前测试验证) checkValue = 0; isSuccess = false; wait.Reset(); #endregion #region 创建消息队列的消费者,readerIndex 参数最好使用枚举而不是魔鬼数字 using (AutoCSer.CacheServer.MessageQueue.Consumer <int> consumer = queue.CreateConsumer(0, onMessage, new AutoCSer.CacheServer.MessageQueue.ConsumerConfig { MemoryCacheNodeCount = 0 })) #endregion { #region 等待消息处理完毕 wait.WaitOne(); #endregion } return(isSuccess); }
/// <summary> /// 消息队列测试 /// </summary> /// <param name="queue"></param> /// <param name="readerIndex"></param> /// <param name="isFirst"></param> private QueueConsumers(QueueConsumers <int> queue, int readerIndex, bool isFirst) { consumer = queue.CreateConsumer(readerIndex, isFirst ? (Action <int>)first : check, new AutoCSer.CacheServer.MessageQueue.ConsumerConfig { MemoryCacheNodeCount = 0 }); }
/// <summary> /// 消息队列测试 /// </summary> /// <param name="queue"></param> /// <param name="isFirst"></param> private QueueConsumer(QueueConsumer <Json <int> > queue, bool isFirst) { consumer = queue.CreateConsumer(isFirst ? (Action <int>)first : check, new AutoCSer.CacheServer.MessageQueue.ConsumerConfig { MemoryCacheNodeCount = 0 }); }