消息队列数量统计(MSMQ,Performance Counter)
微软消息队列服务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()));
消息队列数量统计(MSMQ,Performance Counter)的更多相关文章
- 消息队列工具类(MSMQ)
所要做的是简化msmq的调用代码以及做到可替代性,实现后,调用消息队列代码变为如下所示: QueueService srv = QueueService.Instance(); //检查存储DTO1的 ...
- python监控rabbitmq的消息队列数量
[root@localhost chen]# cat b.py #!/usr/bin/python # -*- coding: UTF-8 -*- import json,time import re ...
- msmq中消息的数量
using System.Diagnostics; PerformanceCounter objCounter = new PerformanceCounter("MSMQ Queue&qu ...
- 【c#】队列(Queue)和MSMQ(消息队列)的基础使用
首先我们知道队列是先进先出的机制,所以在处理并发是个不错的选择.然后就写两个队列的简单应用. Queue 命名空间 命名空间:System.Collections,不在这里做过多的理论解释,这个东西非 ...
- C#实战Microsoft Messaging Queue(MSMQ)消息队列(干货)
前言 在使用MSMQ之前,我们需要自行安装消息队列组件!(具体安装方法大家自己搜一下吧) 采用MSMQ带来的好处是:由于是异步通信,无论是发送方还是接收方都不用等待对方返回成功消息,就可以执行余下的代 ...
- MSMQ消息队列
MSMQ全称MicroSoft Message Queue,微软消息队列,是在多个不同的应用之间实现相互通信的一种异步传输模式,相互通信的应用可以分布于同一台机器上,也可以分布于相连的网络空间中的任一 ...
- C#实战Microsoft Messaging Queue(MSMQ)消息队列
前言 在使用MSMQ之前,我们需要自行安装消息队列组件!(具体安装方法大家自己搜一下吧) 采用MSMQ带来的好处是:由于是异步通信,无论是发送方还是接收方都不用等待对方返回成功消息,就可以执行余下的代 ...
- C#实战Microsoft Messaging Queue(MSMQ)消息队列(干货)<转>
前言 在使用MSMQ之前,我们需要自行安装消息队列组件!(具体安装方法大家自己搜一下吧) 采用MSMQ带来的好处是:由于是异步通信,无论是发送方还是接收方都不用等待对方返回成功消息,就可以执行余下的代 ...
- .NET Core使用App.Metrics监控消息队列(一):初探
一.简介 App Metrics是一个开放源代码和跨平台的.NET库,用于记录应用程序中的指标.App Metrics可以在.NET Core或也支持.NET 4.5.2的完整.NET框架上运行. A ...
随机推荐
- MyBatis的两个配置文件
MyBatis有两个基本的配置文件,一个用来配置环境信息(mybatis.xml),一个用来写SQL语句(xxMapper.xml). mybatis.xml: <?xml version=&q ...
- Consistent Hashing算法-搜索/负载均衡
在做服务器负载均衡时候可供选择的负载均衡的算法有很多,包括: 轮循算法(Round Robin).哈希算法(HASH).最少连接算法(Least Connection).响应速度算法(Respons ...
- hdr_beg(host) hdr_reg(host) hdr_dom(host)
case 1 测试hdr_beg(host) 的情况 acl zjtest7_com hdr_beg(host) -i zjtest7.com use_backend zjtest7_com if z ...
- 去除html标签 正则 <.+?> 解释
http://baike.baidu.com/link?url=2zORJF9GOjU8AkmuHDLz9cyl9yiL68PdW3frayzLwWQhDvDEM51V_CcY_g1mZ7OPdcq8 ...
- [原]Unity3D深入浅出 - 天空盒(Skyboxes)
Unity3D中自带了9中天空盒,在Assets - Import Package - Skyboxes 即可导入天空盒资源. 为Scene添加Skybox:在Edit菜单项里的Render Sett ...
- 手机3D游戏开发:自定义Joystick的相关设置和脚本源码
Joystick在手游开发中非常常见,也就是在手机屏幕上的虚拟操纵杆,但是Unity3D自带的Joystick贴图比较原始,所以经常有使用自定义贴图的需求. 下面就来演示一下如何实现自定义JoySti ...
- 【转】 COCOS2D-X之使用CURL下载图片的一个简单Demo
#include"curl/curl.h" #pragma comment(lib,"libcurl_imp.lib") bool HelloWorld::i ...
- show slave status中的log_file / log_pos
在MySQL的master-slave或dual master的架构中,我们经常使用show slave status命令来查看复制状态. 这里涉及几个重要的日志文件和位置: Master_Log_F ...
- POJ 2243 Knight Moves
Knight Moves Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 13222 Accepted: 7418 Des ...
- C# 中的 null
原文 C# 中的 null C# 允许将 null 值赋给任意引用变量(不能把 null 赋给一个值变量).值为 null 的变量表明该变量不引用内存中的任何对象. 如下所示: Circle c = ...