微软消息队列服务MSMQ (Microsoft Message Queue),工作在在线或者离线场景,并提供异步编程功能。互联网和企业开发很多场景应用,例如电商的订单处理流程,这是因为客户端不需要等待服务端返回确认。

项目开发中用MSMQ分为公有队列(Public)和私有队列(Private),主要区别是接收,私有队列需要本地接收,或者调用WMI接收,公有队列远程接收需要有域用户权限。创建消息队列的时候分为事务和非事务,主要区别是非事务队列存储在内存,事务队列存储在内存和硬盘,重启Windows后非事务队列清空。事务队列发送和接收的性能要比非事务队列低50%左右,在一台服务器具体情况还要看消息的大小。

某些情况下需要统计消息消息数量,用来监控队列状态,如消息堆积数量过大时需要预警。统计消息有两种方式, Performance Counter(性能计数器)和WMI(Windows Management Instrumentation,Windows 管理规范),两者性能接近。如果只是消息数量统计,推荐用简单的Performance Counter。

 //MSMQ性能计数器
PerformanceCounterCategory countCategory = new PerformanceCounterCategory("MSMQ Queue"); //所有消息队列数量
PerformanceCounter allCount = new PerformanceCounter("MSMQ Queue", "Messages in Queue");
foreach (string instanceName in countCategory.GetInstanceNames())
{
allCount.InstanceName = instanceName;//需要给实例名赋值
Console.WriteLine(string.Format("{0} 数量:{1}", allCount.InstanceName, allCount.NextValue().ToString()));
} //单个消息队列数量
PerformanceCounter singleCount = new PerformanceCounter("MSMQ Queue", "Messages in Queue", Environment.MachineName + "\\private$\\queue_demo");
singleCount.InstanceName = Environment.MachineName + "\\private$\\queue_demo";
Console.WriteLine(string.Format("{0} 数量:{1}", singleCount.InstanceName, singleCount.NextValue().ToString()));

最新文章

  1. 压缩html
  2. 【单页应用之通信机制】view之间应该如何通信
  3. [AlwaysOn Availability Groups]排查:Primary上的修改无法在Secondary体现
  4. 鸟哥的linux私房菜学习记录之软件安装RPM,SRPM,YUM
  5. FZU 2193 So Hard (有限小数转换最简分数)(想法题)
  6. [问题2014A02] 解答二(求和法+拆分法,由张诚纯同学提供)
  7. FastReport代码计算高度
  8. Mingyang.net:Controller必需是public吗?
  9. button swift
  10. LeetCode45 Jump Game II
  11. C#中的线程(上)-入门 分类: C# 线程 2015-03-09 10:56 53人阅读 评论(0) 收藏
  12. LNK 2005 error 函数定义也是定义!!
  13. Intellij IDEA 像eclipse那样给maven添加依赖
  14. js中几种实用的跨域方法原理详解【转】
  15. 第一节20181109 《Linux就该这么学》
  16. CSS布局实战
  17. Windows 上安装 Scala
  18. vue-cli 本地数据模拟
  19. Linux curl 命令下载文件
  20. 如何在Qt Creator中创建pri文件,以及pri文件的说明

热门文章

  1. 网上图书商城项目学习笔记-037工具类之BaseServlet及统一中文编码
  2. RxJava学习( 二)
  3. android 引用 project以及下拉刷新开源类库Android-PullToRefresh 的使用
  4. XSLT 处理程序是如何工作的
  5. WinCE启动失败的原因与解决办法分析
  6. Ubuntu12.04下arm交叉编译环境的建立
  7. eclipse 中创建maven web项目
  8. Oracle Length 和 Lengthb 函数说明 .(用来判断记录值里是否有中文内容)
  9. 通用权限管理系统Ver2.0
  10. (一)学习C#之浮点类型float小结