1.创建消息队列
/// <summary>
/// 在指定的路径中创建非事务性“消息队列”队列
/// </summary>
/// <param name="path">要创建队列的路径</param>
/// <returns>返回:表示新队列的 System.Messaging.MessageQueue</returns>
public static MessageQueue Create(string path)
/// <summary>
/// 在指定的路径中创建事务性或非事务性“消息队列”队列
/// </summary>
/// <param name="path">要创建的队列的路径</param>
/// <param name="trans">如果创建事务性队列,为 true;如果创建非事务性队列,则为 false</param>
/// <returns>返回:表示新队列的 System.Messaging.MessageQueue</returns>
public static MessageQueue Create(string path, bool trans)
//实现消息队列的创建简单代码,创建一个名为"myQueue"的非事务性"消息队列"
public static void CreateQueue(string path)
{
if (!MessageQueue.Exists(path))
{
//MessageQueue.Create(path);
MessageQueue.Create(@".\private$\myQueue");
}
}
2. 序列化和发送消息
MSMQ消息队列中定义的消息由一个主体(body)和若干属性构成。消息的主体可以由文本、二进制构成,根据需要还可以被加密。在MSMQ 中消息的大小不能够超过4MB。发送消息是通过Send方法来完成的,需要一个Message参数。
a、发送消息:
步骤:连接队列-->指定消息格式-->提供要发送的数据(主体)-->调用Send()方法将消息发送出去。详细见后面的示例程序。
b、序列化消息:
消息序列化可以通过.NET Framework附带的三个预定义格式化程序来完成:
-- XMLMessageFormatter对象----MessageQueue组件的默认格式化程序设置。
-- BinaryMessageFormatter对象;
-- ActiveXMessageFormatter对象;
常用的XMLMessageFormatter对象,提供3种方式重载:
a.public XmlMessageFormatter();
b.public XmlMessageFormatter(string[] targetTypeNames);
c.public XmlMessageFormatter(Type[] targetTypes);
// 序列化为字符串格式
XmlMessageFormatter formatter = new XmlMessageFormatter(new Type[] { typeof(string) });
3.消息队列常用的方法
在.NET环境下编写Message Queue程序的前提就是需要先安装MSMQ,本文之前已经作了详细的介绍。要开发MSMQ程序就必须学习一个很重要的类(MessageQueue),该类位于名称空间System.Messageing下。其中有几个常用的方法必须掌握:
--Create():创建使用指定路径的新消息队列。
--Delete():删除现有的消息队列。
--Existe():查看指定消息队列是否存在。
--GetAllMessages():得到队列中的所有消息。
--GetPublicQueues():在“消息队列”网络中定位消息队列。
--Peek/BeginPeek():查看某个特定队列中的消息队列,但不从该队列中移出消息。
--Receive/BeginReceive():检索指定消息队列中最前面的消息并将其从该队列中移除。
--Send():发送消息到指定的消息队列。
--Purge():清空指定队列的消息。