MSMQ

时间:2023-03-09 03:30:47
MSMQ

1.安装MSMQ

2.添加私有的队列

3.MSMQ可以发送的类型可以是任意类型,包括类

        static string strServer = @"FormatName:Direct=TCP:10.7.46.42\private$\msmq";

        static void Main(string[] args)
{
DeleteAllMessage();
SendMessage();
ReveiveMessage();
} public static void DeleteAllMessage()
{
MessageQueue myQueue = new MessageQueue(strServer);
myQueue.Purge(); //删除此队列中包含的所有消息
myQueue.Dispose();
} public static void SendMessage()
{
MessageQueue myQueue = new MessageQueue(strServer);
Message myMessage = new Message();
try
{
myMessage.Body = new Person() { Name = "jake", Age = 29, Birthday = Convert.ToDateTime("1987/07/20") };
myMessage.Formatter = new XmlMessageFormatter(new Type[] { typeof(Person) });
//设置消息发送的优先级别
myMessage.Priority = MessagePriority.Highest; //最高消息优先级
myQueue.Send(myMessage);
}
catch(Exception ex)
{ }
finally
{
myMessage.Dispose();
myQueue.Dispose();
} } public static void ReveiveMessage()
{
//连接到本地队列
MessageQueue myQueue = new MessageQueue(strServer);
myQueue.Formatter = new XmlMessageFormatter(new Type[] { typeof(Person) });
Message myMessage = null;
try
{
int count = myQueue.GetAllMessages().Length;
//从队列中接收消息
//Peek: 返回队列中第一条消息的副本,而不从队列中移除该消息
//Receive: 接收队列中的第一条消息,但不将它从队列中移除
//PeekById: 返回具有指定消息标识符的消息的副本,但不从队列中移除消息
//ReceiveById: 接收匹配给定标识符的消息,并将其从队列中移除
myMessage = myQueue.Receive();
Person p = (Person)myMessage.Body; //获取消息的内容
Console.WriteLine("Name:" + p.Name);
Console.WriteLine("Age:" + p.Age.ToString());
Console.WriteLine("Birthday:" + p.Birthday.ToString("yyyy/MM/dd"));
count = myQueue.GetAllMessages().Length;
Console.ReadLine(); }
catch
{
Console.WriteLine("error4");
}
finally
{
myMessage.Dispose();
myQueue.Dispose();
}
}