用C#实现的MSMQ

王朝c#·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

只能用PRIVATE队列了,工作组的用不了公用队列

using System;

using System.Messaging;

using System.Drawing;

using System.IO;

namespace ConsoleApplication1

{

public class Order

{

public int orderId;

public DateTime orderTime;

};

public class MyNewQueue

{

public static void Main()

{

MyNewQueue myNewQueue = new MyNewQueue();

CreateQueue(".\\myQueue");

myNewQueue.SendMessage();

// Receive a message from a queue.

myNewQueue.ReceiveMessage();

return;

}

public static void CreateQueue(string queuePath)

{

try

{

if(!MessageQueue.Exists(queuePath))

{

MessageQueue.Create(@".\private$\myQueue");

}

else

{

Console.WriteLine(queuePath + " already exists.");

}

}

catch (MessageQueueException e)

{

Console.WriteLine(e.Message);

}

}

public void SendMessage()

{

try

{

Order sentOrder = new Order();

sentOrder.orderId = 3;

sentOrder.orderTime = DateTime.Now;

MessageQueue myQueue = new MessageQueue(".\\private$\\myQueue");

Message myMessage = new Message(sentOrder);

myQueue.Send(myMessage);

}

catch(ArgumentException e)

{

Console.WriteLine(e.Message);

}

return;

}

public void ReceiveMessage()

{

MessageQueue myQueue = new MessageQueue(".\\private$\\myQueue");

myQueue.Formatter = new XmlMessageFormatter(new Type[]

{typeof(ConsoleApplication1.Order)});

try

{

Message myMessage = myQueue.Receive();

Order myOrder = (Order)myMessage.Body;

Console.WriteLine("Order ID: " +

myOrder.orderId.ToString());

Console.WriteLine("Sent: " +

myOrder.orderTime.ToString());

}

catch (MessageQueueException)

{

}

catch (InvalidOperationException e)

{

Console.WriteLine(e.Message);

}

return;

}

}

}

这个例子可以直接运行.呵呵,刚学这个不久,现学现买了.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航