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张单子,中小型购物系统中应该够用了)

时间: 2024-09-13 18:37:29

msmq发送速度的测试的相关文章

dm9000 lwip-DM9000移植LWIP协议栈,数据发送速度达不到要求,

问题描述 DM9000移植LWIP协议栈,数据发送速度达不到要求, 在TI的6713B上面移植协议栈作为TCP服务器成功了,但是数据发送速度不是特别快,一秒内发送72Byte的数据包为2000个,我设置的TCP_MSS 72*20,其它的如tcp_snd_buf 4*mss等等,另外,我测试了一下就是不经过lwip协议栈,在主函数里面直接调用DM9000_send函数来发送数据(没有按照tcp.ip数据格式),大概一秒钟也就300个包,不过发送的这个包大小在(1B-3kB)之间,希望各路大神能不

如何加快Foxmail邮件发送速度

我们在发送或接收邮件时,可以发现电子邮件会花大量的时间来解析域名(Logon Server),这对于我们的银子和时间都是非常不利的.其实,我们知道,在电子邮件程序中有一个POP和SMTP设置,POP是用于接收邮件的服务器地址,二SMTP是发送电子邮件的服务器地址,POP相当于收信的邮局,而SMTP相当于发信的邮局,只不过,现实生活中收信和发信都是在同一个邮局里而已.既然这样,我们就可以从最近的邮局来寄信,以节约时间.,我们也可以仿照此法,将SMTP发信服务器置为本地最近的ISP服务器(POP收信

宽带上传速度怎么测试?

  网速一般分为下载速度和上传速度,一般我们测算网速只是测试下载速度,只要电脑从网上下载速度快,用户通常比较满意.但你知道吗?上传速度也是值得关注的,尤其是在云网络时代,很多朋友都要传文件到网盘或者视频网站,这里考验的就是宽带上传速度了,下面本文教大家如何测试宽带上传速度,方法如下. 宽带上传速度怎么测试 教你如何看电脑宽带上传速度 宽带上传速度怎么测试? 要测试电脑宽带上传速度,其实也很简单,主要包括测试法与上传法,下面本文分别介绍下. 1.测试法 与测试宽带下载速度一样,宽带上传速度也是可以

加快Foxmail邮件发送速度的方法

  我们在发送或接收邮件时,可以发现电子邮件会花大量的时间来解析域名(Logon Server),这对于我们的银子和时间都是非常不利的.其实,我们知道,在电子邮件程序中有一个POP和SMTP设置,POP是用于接收邮件的服务器地址,二SMTP是发送电子邮件的服务器地址,POP相当于收信的邮局,而SMTP相当于发信的邮局,只不过,现实生活中收信和发信都是在同一个邮局里而已.既然这样,我们就可以从最近的邮局来寄信,以节约时间.,我们也可以仿照此法,将SMTP发信服务器置为本地最近的ISP服务器(POP

宽带上传速度怎么测试

  网速一般分为下载速度和上传速度,一般我们测算网速只是测试下载速度,只要电脑从网上下载速度快,用户通常比较满意.但你知道吗?上传速度也是值得关注的,尤其是在云网络时代,很多朋友都要传文件到网盘或者视频网站,这里考验的就是宽带上传速度了,下面本文教大家如何测试宽带上传速度,方法如下. 宽带上传速度怎么测试 教你如何看电脑宽带上传速度 宽带上传速度怎么测试? 要测试电脑宽带上传速度,其实也很简单,主要包括测试法与上传法,下面本文分别介绍下. 1.测试法 与测试宽带下载速度一样,宽带上传速度也是可以

对PHP采集数据提取核心函数的速度的测试与分析

对PHP采集数据提取核心函数的速度的测试与分析由于程序需要,于是对PHP采集中的字符提取的核心部分进行了执行速度的测试.测试了三种最常见的提取办法:方法一:<?phprequire "class.debug.php";function getContent ( $sourceStr ){$content = strstr( $sourceStr, '形' );$content = substr( $content, 0, strrpos( $content, '言' ) + st

Rails测试《十一》添加邮件发送程序及测试邮件发送程序

讲到测试邮件发送程序,我们首先要让系统可以发送邮件.我们先来给系统添加发送邮件的功能. Action Mailer in Rails 3是一个不错的视频教程,大家可以参考. 还有就是http://guides.rubyonrails.org/action_mailer_basics.html中更加详细的介绍. 添加邮件发送程序 发送邮件要保证我们有目标邮箱,所以呢,我们的用户要有一个属性:email. 还是拿我的blog项目作为练习项目. 我们在用户注册的时候给他发一封邮件. 首先我们创建一个初

微信 申请全网发布时,发送事件消息测试失败

问题描述 {"errcode":61003,"errmsg":"componentisnotauthorizedbythisaccount"}昨晚申请全网发布的时候,前面几个步骤都没什么问题,在获取微信公众号access_token的时候,一直报上面这个错误.我不明白的是,微信那边按理说,微信后台会临时把wx570bc396a51b8ff8授权给我的开发者账号,但为什么一直提示这的问题?求万能的CDSN赐我力量...PS:没啥想说的了,昨晚上哭了

PHP邮件发送(已测试成功)

/** 用PHPMailer类来发信   步骤: 0: 引入 1: 实例化 2: 配置属性 3: 调用发送   **/   require('./PHPMailer/class.phpmailer.php');   $phpmailer = new PHPMailer();     /* 设置phpmailer发信用的方式 可用用win下mail()函数来发 可以用linux下sendmail,qmail组件来发 可以利用smtp协议登陆到某个账户上,来发 */   $phpmailer->Is