欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

MSMQ 消息队列创建以及使用-MSMQ(C#用法)

最编程 2024-08-06 17:53:27
...

向队列中写入消息

  • 要注意的点就是路径中的大小写
  • 消息使用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;
}