msmq发送速度的测试
生活随笔
收集整理的這篇文章主要介紹了
msmq发送速度的测试
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在一些并發量比較高的"中小型"應用中,如果短期內有大量的數據插入,利用msmq中轉是一個不錯的選擇(petshop就是這么干的),想知道msmq一秒鐘內到底能發多少條記錄嗎?
?
?
?1?using?System;?2?using?System.Diagnostics;
?3?using?System.Messaging;
?4?using?System.Collections.Generic;
?5?
?6?namespace?MsgLimit
?7?{
?8?????class?Program
?9?????{
10?????????static?void?Main(string[]?args)
11?????????{????????????
12?
13?????????????MessageQueue?queue?=?new?MessageQueue("jimmyibm\\private$\\msg");
14?
15?????????????Stopwatch?stopWatch?=?new?Stopwatch();
16?
17?????????????stopWatch.Start();
18?
19?????????????const?int?MAX_NUMBER?=?5000;
20?
21?????????????for?(int?i?=?1;?i?<=?MAX_NUMBER;?i++)
22?????????????{
23?????????????????Message?msg?=?new?Message();
24?????????????????//這里隨便設點兒測試值
25?????????????????msg.Label?=?i.ToString();
26?????????????????msg.Body?=?i.ToString().PadLeft(8,?'0');
27?????????????????//msg.Recoverable?=?true;//設置消息可恢復(即服務器重啟后,消息還在,但是啟用這個選項將會使發送時間加倍,因為"可恢復"的機制就是先在服務器硬盤生成文本文件,多了一次寫文件的IO操作)
28?????????????????queue.Send(msg);
29?????????????}
30?
31?????????????stopWatch.Stop();
32?
33?????????????Console.WriteLine("{0}條發送完成,共耗時:{1}秒,平均每秒發送{2}條!",?MAX_NUMBER,?stopWatch.ElapsedMilliseconds?/?1000,?MAX_NUMBER?/?(stopWatch.ElapsedMilliseconds?/?1000));
34?
35?????????????int?j?=?0;
36?
37?????????????stopWatch.Reset();
38?????????????stopWatch.Start();
39?
40?????????????//List<Message>?listMsg?=?new?List<Message>();
41?????????????while?(true)
42?????????????{
43?????????????????try
44?????????????????{
45?????????????????????Message?msg?=?queue.Receive(new?TimeSpan(0,?0,?0,?0,?1));
46?????????????????????
47?????????????????????//可以做一些事情,比如每50條就批量入一次庫(這比原來一條一條的直接插入數據到db會快得多)
48?????????????????????//listMsg.Add(msg);
49?????????????????????//if?(listMsg.Count?>=?50)?
50?????????????????????//{
51?????????????????????//????//利用事務批量入庫
52?????????????????????//????listMsg.Clear();//操作完成后清空
53?????????????????????//}
54?????????????????????j++;
55?????????????????????System.Threading.Thread.Sleep(1);
56?
57?????????????????}
58?????????????????catch
59?????????????????{
60?????????????????????stopWatch.Stop();
61?????????????????????Console.WriteLine("{0}條記錄接收完成,耗時{1}秒!",?j.ToString(),?stopWatch.ElapsedMilliseconds?/?1000);
62?????????????????????break;
63?????????????????}
64?????????????}
65?
66?????????????Console.ReadLine();
67?????????}
68?????}
69?}
70?
71?
?
在我的IBM T60上跑出來的結果,大概1s鐘能發2500條左右(也就是說下訂單的話,一秒鐘能順暢下2500張單子,中小型購物系統中應該夠用了)
總結
以上是生活随笔為你收集整理的msmq发送速度的测试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 完全清除一个带包的项目文件的方法
- 下一篇: 利用JavaScript实现简单的下拉菜