在一些并发量比较高的"中小型"应用中,如果短期内有大量的数据插入,利用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发送速度的测试相关推荐

  1. STM32F407 STM32F407 LWIP速度优化测试速度可以达到1万kb每秒 相当于80兆的网络速度

    STM32F407 LWIP速度优化测试 使用的板子是正点原子的探索者 STM32F407ZGT6. STM32F407 LWIP速度优化,测试速度可以达到1万kb每秒, 相当于80兆的网络速度. 差 ...

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

    讲到测试邮件发送程序,我们首先要让系统可以发送邮件.我们先来给系统添加发送邮件的功能. Action Mailer in Rails 3是一个不错的视频教程,大家可以参考. 还有就是http://gu ...

  3. StatsD 五种类型数据发送形式拟测试

    statsd 五种类型数据发送形式拟测试 StatsD Metric Types Counting gorets:1|c This is a simple counter. Add 1 to the ...

  4. 电脑上传网速怎么测试软件,宽带上传速度怎么测试 教你如何看电脑宽带上传速度...

    网速一般分为下载速度和上传速度,一般我们测算网速只是测试下载速度,只要电脑从网上下载速度快,用户通常比较满意.但你知道吗?上传速度也是值得关注的,尤其是在云网络时代,很多朋友都要传文件到网盘或者视频网 ...

  5. 名图怎么弄云服务器_云服务器购买了宽带的速度怎么测试?

    西昆云详细说一下企业租用云服务器搭建网站,很多新手站长会把带宽当成宽带来测试,比如在自己的云服务器上下载东西测试速度,一旦下载的东西慢了就觉得有问题,其实这是不准确的,那么如何查看云服务器的带宽速度呢 ...

  6. ab 发送post请求测试API性能

    apache benchmark 工具 测试API 性能发送 Post 请求(Linux环境验证通过) 在apache bin 目录,在linux上执行命令: ./ab -n 1 -v 4 -p 'u ...

  7. 使用SG_IO发送SCSI 指令测试底层驱动的scatter-gather 功能

    http://gmd20.blog.163.com/blog/static/16843923201002274341552/ Linux中的sg驱动 ("The Linux SCSI Gen ...

  8. 使用spring实现邮件的发送(含测试,源码,注释)

    此篇主要讲的是使用spring配置实现邮件发送,与之前的底层实现简便了不少,只需要几个配置就可以了,那么请往下看: 先写个接口 /** * @Title: IMailserdService.java ...

  9. msmq 发送到远程专用队列不存在_不知道消息中间件是什么?RabbitMQ从头到尾详解介绍...

    一.背景 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现.AMQP 的出现其实也是应了广大人民群众的需求,虽然在同步消息通讯的世界里有很 ...

最新文章

  1. label之间展示间距_cob小间距led显示屏分类
  2. 7-3 作业调度算法--高响应比优先 (40 分)(思路+详解+vector容器做法)Come Baby!!!!!
  3. 虚拟化服务器类型,虚拟化服务器类型
  4. 用c语言求最大公约数的流程图,如何用c语言求最大公约数和最小公倍数
  5. js如何上传大文件到服务器,js将文件上传到远程服务器
  6. java学习——equals()和==的比较
  7. python 多进程 调用模块内函数_python--多进程的用法详解实例
  8. SAP License:结算金额大于可支配金额
  9. 鸿蒙 OS 背后神秘人物曝光!
  10. php 规则路由器,ThinkPHP6路由踩坑之变量规则
  11. 如何与亦敌亦友的 null 说拜拜?大神原来是这么做的!
  12. java rxtx 64_win7 64为下使用rxtx串口通信
  13. 使用PS将图片自然从清晰到模糊过渡
  14. CAD绘制带角度的矩形阵列
  15. Python获取当前时间
  16. mac软件全屏时候最顶上任务栏保留_一键整理 Mac 顶部菜单栏,这款免费工具 App 还你清爽...
  17. 主板开启网络唤醒_网络唤醒bios设置【应用方式】
  18. 「Shell」- 使用环境变量,替换在文件中的变量(envsubst) @20210401
  19. InnoDB和Myisam引擎的优缺点
  20. [弱校联萌2016]2016弱校联盟十一专场10.3

热门文章

  1. Eclipse反编译插件JadClipse安装及使用
  2. linux挂载查看、添加与取消
  3. 请写一个函数,实现以下功能: 字符串“open_door” 转换成 “OpenDoor”、”make_by_id” 转换成 ”MakeById”...
  4. .Net学习笔记----2015-06-28(值类型和引用类型)
  5. codeforces 297 E. Anya and Cubes
  6. android Listview2 笔记
  7. 年轻人还有机会征服这个世界吗?
  8. CanFestival应用
  9. “要源码上门自取”,结果人真上门了!国内企业再惹争议
  10. 火遍全网的Hutool,如何使用Builder模式构建线程池