Esempio n. 1
0
        /// <summary>
        /// 消息队列测试
        /// </summary>
        /// <param name="client"></param>
        /// <returns></returns>
        internal static bool TestCase(AutoCSer.CacheServer.Client client)
        {
            string name = "QueueConsumer";

            #region  除名称为 QueueConsumer 的缓存数据,防止未处理数据对测试验证产生副作用
            client.RemoveDataStructure(name);
            #endregion

            #region 创建名称为 QueueConsumer 的 JSON 消息队列
            QueueConsumer <Json <int> > queue = client.GetOrCreateDataStructure <QueueConsumer <Json <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 创建消息队列的消费者
            AutoCSer.CacheServer.MessageQueue.QueueConsumer <Json <int>, int> consumer = queue.CreateConsumer(onMessage, new AutoCSer.CacheServer.MessageQueue.Config.QueueConsumer {
                MemoryCacheNodeCount = 0
            });
            #endregion
            using (consumer)
            {
                #region 等待消息处理完毕
                wait.WaitOne();
                #endregion
            }
            return(isSuccess);
        }
Esempio n. 2
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);
        }
Esempio n. 3
0
        /// <summary>
        /// 消息分发测试
        /// </summary>
        /// <param name="client"></param>
        /// <returns></returns>
        internal static bool TestCase(AutoCSer.CacheServer.Client client)
        {
            string name = "MesssageDistributor";

            #region  除名称为 MesssageDistributor 的缓存数据,防止未处理数据对测试验证产生副作用
            client.RemoveDataStructure(name);
            #endregion

            #region 创建名称为 MesssageDistributor 的 JSON 消息分发
            Distributor <Json <int> > distributor = client.GetOrCreateDataStructure <Distributor <Json <int> > >(name).Value;
            if (distributor == null)
            {
                return(false);
            }
            #endregion

            #region 添加消息 2
            ReturnValue <bool> isEnqueue = distributor.Enqueue(2);
            if (!isEnqueue.Value)
            {
                return(false);
            }
            #endregion

            isEnqueue = distributor.Enqueue(6);
            if (!isEnqueue.Value)
            {
                return(false);
            }
            isEnqueue = distributor.Enqueue(4);
            if (!isEnqueue.Value)
            {
                return(false);
            }

            #region 初始化消息消费状态(仅用于当前测试验证)
            checkValue = 0;
            wait.Reset();
            #endregion

            #region 创建消息分发的消费者
            using (AutoCSer.CacheServer.MessageQueue.DistributionConsumer <Json <int>, int> consumer = distributor.CreateConsumer(onMessage, new AutoCSer.CacheServer.MessageQueue.DistributionConsumerConfig {
                MemoryCacheNodeCount = 0
            }))
            #endregion
            {
                #region 等待消息处理完毕
                wait.WaitOne();
                #endregion
            }
            return(checkValue == successValue);
        }