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); } } }); } }
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); } } }); } }