C#操作MSMQ

C#操作MSMQ

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Messaging;

 

namespace MessageQueues

{

class Program

{

static void Main(string[] args)

{

/* 注意事项:

* 1. 发送和接受消息的电脑都要安装MSMQ

* 2. 在工作组模式下不能访问public队列。

* 3. 访问本地队列和远程队列,path字符串格式不太一样。

* 4. public队列存在于消息网络中所有主机的消息队列中。

* 5. private队列则只存在于创建队列的那台主机上。

*/

 

#region 以下是private队列访问示例:

 

//访问本地电脑上的消息队列时Path的格式可以有如下几种:

MessageQueue mq = new MessageQueue();

//mq.Path = @".\Private$\test";

//mq.Path = @"sf00902395d34\Private$\test"; //sf00902395d34是主机名

//mq.Path = @"FormatName:DIRECT=OS:sf00902395d34\Private$\test";

//mq.Path = @"FormatName:DIRECT=OS:localhost\Private$\test";

 

//访问远程电脑上的消息队列时Path的格式

mq.Path = @"FormatName:DIRECT=OS:server\Private$\test";

 

//构造消息

Message msg = new Message();

msg.Body = "Hello,world. This is a test message. " + DateTime.Now.ToString();

 

//向队列发送消息

mq.Send(msg);

 

//读取队列中的所有消息

Message[] msgs = mq.GetAllMessages();

foreach (Message m in msgs)

{

Console.WriteLine(m.Body.ToString());

}

 

//清除队列中的所有消息

mq.Purge();

 

#endregion

 

}

}

}

 

需要注意的几点:

1. 访问远程队列和本地队列的path字符串格式有区别。

2. 不管是访问远程队列还是本地队列,访问者的本地系统一定要安装MSMQ。

posted @ 2017-11-02 10:42  任飞儿  阅读(400)  评论(0编辑  收藏  举报