1.
public class MSMQHelper
{
private readonly string _queuePath;
private MessageQueue messageQueue;
public MSMQHelper(string queuePath) {
this._queuePath = queuePath;
//判断Queue 是否存在
if(!MessageQueue.Exists(this._queuePath)){
MessageQueue.Create(this._queuePath);
}
//打开Queue
messageQueue = new MessageQueue(this._queuePath);
messageQueue.DefaultPropertiesToSend.AttachSenderId = false;
messageQueue.DefaultPropertiesToSend.UseAuthentication = false;
messageQueue.DefaultPropertiesToSend.UseEncryption = false;
messageQueue.DefaultPropertiesToSend.AcknowledgeType = AcknowledgeTypes.None;
messageQueue.DefaultPropertiesToSend.UseJournalQueue = false;
messageQueue.Formatter = new BinaryMessageFormatter();
}
//入Queue
public void ENQueue(object obj)
{
System.Messaging.Message message = new System.Messaging.Message();
message.Body = obj;
messageQueue.Send(obj);
}
//出Queue
public object DEQueue()
{
object obj = null;
System.Messaging.Message message = messageQueue.Receive();
Console.WriteLine(message.Formatter);
obj = message.Body;
return obj;
}
}
2.
[Serializable]
public class Task
{
public Int32 TaskID { get; set; }
public string TaskName { get; set; }
public DateTime TaskCreateTime { get; set; }
public DateTime TaskExecluteTime { get; set; }
public int TaskStatus { get; set; }
}
3.
static void Main(string[] args)
{
string queuePath = @".\Private$\TestQueue";
E6Pro_MSMQ.MSMQHelper mh = new MSMQHelper(queuePath);
//发送一个字符串
mh.ENQueue("this is a test msg");
string msg = mh.DEQueue().ToString();
Console.WriteLine("msg:"+msg);
//发送一个对象
Task t = new Task();
t.TaskID = 1;
t.TaskName = "测试任务";
t.TaskStatus = 9;
t.TaskCreateTime = DateTime.Now;
t.TaskExecluteTime = DateTime.Now.AddMinutes(1000);
mh.ENQueue(t);
object obj = mh.DEQueue();
Task rt = (Task)obj;
Console.WriteLine(rt.TaskID+":"+rt.TaskName);
Console.ReadLine();
}