Exemple #1
0
        static void WriteMessagePerfTest()
        {
            var threadCount  = int.Parse(ConfigurationManager.AppSettings["concurrentThreadCount"]);                        //并行写消息的线程数
            var messageSize  = int.Parse(ConfigurationManager.AppSettings["messageSize"]);                                  //消息大小,字节为单位
            var messageCount = int.Parse(ConfigurationManager.AppSettings["messageCount"]);                                 //总共要写入的消息数
            var batchSize    = int.Parse(ConfigurationManager.AppSettings["batchSize"]);                                    //批量持久化大小
            var payload      = new byte[messageSize];
            var messages     = new List <Message>();
            var topic        = "topic1";
            var queue        = new Queue(topic, 1);
            var count        = 0L;

            for (var i = 0; i < batchSize; i++)
            {
                messages.Add(new Message(topic, 100, payload));
            }
            for (var i = 0; i < threadCount; i++)
            {
                Task.Factory.StartNew(() =>
                {
                    while (true)
                    {
                        var current = Interlocked.Increment(ref count);
                        if (current > messageCount)
                        {
                            break;
                        }
                        foreach (var message in messages)
                        {
                            message.CreatedTime = DateTime.Now;
                        }
                        if (batchSize == 1)
                        {
                            _messageStore.StoreMessageAsync(queue, messages.First(), (x, y) =>
                            {
                                _performanceService.IncrementKeyCount("default", (DateTime.Now - x.CreatedTime).TotalMilliseconds);
                            }, null, null);
                        }
                        else
                        {
                            _messageStore.BatchStoreMessageAsync(queue, messages, (x, y) =>
                            {
                                foreach (var record in x.Records)
                                {
                                    _performanceService.IncrementKeyCount("default", (DateTime.Now - record.CreatedTime).TotalMilliseconds);
                                }
                            }, null, null);
                        }
                    }
                });
            }
        }
Exemple #2
0
        static void WriteMessagePerfTest()
        {
            var threadCount  = int.Parse(ConfigurationManager.AppSettings["concurrentThreadCount"]);                        //并行写消息的线程数
            var messageSize  = int.Parse(ConfigurationManager.AppSettings["messageSize"]);                                  //消息大小,字节为单位
            var messageCount = int.Parse(ConfigurationManager.AppSettings["messageCount"]);                                 //总共要写入的消息数
            var batchSize    = int.Parse(ConfigurationManager.AppSettings["batchSize"]);                                    //批量持久化大小
            var payload      = new byte[messageSize];
            var messages     = new List <Message>();
            var topic        = "topic1";
            var queue        = new Queue(topic, 1);
            var count        = 0L;

            for (var i = 0; i < batchSize; i++)
            {
                messages.Add(new Message(topic, 100, payload));
            }
            _watch = Stopwatch.StartNew();
            StartPrintThroughputTask();

            for (var i = 0; i < threadCount; i++)
            {
                Task.Factory.StartNew(() =>
                {
                    while (true)
                    {
                        var current = Interlocked.Increment(ref count);
                        if (current > messageCount)
                        {
                            break;
                        }
                        if (batchSize == 1)
                        {
                            _messageStore.StoreMessageAsync(queue, messages.First(), (x, y) =>
                            {
                                Interlocked.Increment(ref _currentCount);
                            }, null, null);
                        }
                        else
                        {
                            _messageStore.BatchStoreMessageAsync(queue, messages, (x, y) =>
                            {
                                for (var j = 0; j < x.Records.Count(); j++)
                                {
                                    Interlocked.Increment(ref _currentCount);
                                }
                            }, null, null);
                        }
                    }
                });
            }
        }