MSMQ 消息队列创建以及使用

MSMQ

多个不同的应用之间实现相互通信的一种异步传输模式

MSMQ(创建)

  1. 程序和功能
  2. 启用或者关闭windows功能
  3. 选择microsoft消息队列服务器核心
  4. 勾选下载安装

在这里插入图片描述

  1. 我的计算机 >>>右键>>> 管理 就会有一个消息队列
  2. 添加一个专有队列(注意:虽然真实显示不区分大小写,但是真实路径是需要区分的)

在这里插入图片描述

  • 队列消息中可以看到未被取出的数据
    在这里插入图片描述

MSMQ(C#用法)

向队列中写入消息

  • 要注意的点就是路径中的大小写
  • 消息使用Message类来传递
/// <summary>
/// 写入消息队列
/// </summary>
/// <param name="Msname">队列名称</param>
/// <param name="Message">队列消息</param>
public static void sendMessage(string Msname,string MessageStr)
{
	    //消息队列名
	    string path = string.Format(@".\private$\{0}", Msname);
	    //判断队列是否存在
	    if (!MessageQueue.Exists(path))
	    {
	        MessageQueue.Create(path);
	    }
	    MessageQueue queue = new MessageQueue(path);
	    Message message = new Message();
	    message.Body = MessageStr;
	    message.Formatter = new XmlMessageFormatter(new Type[] { typeof(string) });
	    queue.Send(message);
 }

获取队列中的消息

  • Receive() 这种方式取数据,取出的数据在队列中会进行删除。
  • Peek() 取出数据队列中不进行删除。(进行预览)
/// <summary>
/// 获取队列消息
/// </summary>
/// <param name="path">队列路径</param>
public static string GetQueryMessage(string path)
{
		MessageQueue queue = new MessageQueue(path);
		System.Messaging.Message msg = queue.Receive();
		msg.Formatter = new XmlMessageFormatter(new Type[] { typeof(string) });
		return msg.Body.ToString();
}

获取队列中正在排队数

  • 当然如果要获取所有的消息 可以使用GetAllMessages(),它所返回的是Message数组类型,遍历输出。
/// <summary>
/// 获取队列排队消息数量
/// </summary>
/// <param name="path">队列路径</param>
public static int GetQueryMessageCount(string path)
{
		MessageQueue queue = new MessageQueue(path);
		int count = queue.GetAllMessages().Length;
        return count;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值