コード例 #1
0
        /// <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);
        }
コード例 #2
0
 /// <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
     });
 }
コード例 #3
0
ファイル: QueueConsumer.cs プロジェクト: AutoCSer/AutoCSer
 /// <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
     });
 }