1) MSMQ概述
MSMQ 表示微软消息队列服务。MSMQ 可以工作在在线或者离线场景,并提供异步编程功能。如果客户端离线,MSMQ将会是最合适的方法,这是因为服务端不需要等待客户端读取数据并向服务端返回确认。
(2) 确定MSMQ 是否已经安装
通过在运行窗口执行"Services",然后找到Message Queuing. 如果没有就说明MSMQ 没有安装。
(3) MSMQ 安装
控制面板 -> 添加/删除Windows 组件 -- 选择消息队列 - 下一步
这将在你的系统中安装MSMQ,然后你可以通计算机管理来进行确认。
控制面板 -> 管理工具 -> 计算机管理 -> 服务和应用 -> 消息队列,
你将看到出栈队列,私有队列,系统队列,触发器。
(4) 消息类型
MSMQ 支持两种类型的消息: XML 和二进制, 下面的例子分别使用XML的二进制消息。
(5) MSMQ 架构(命名空间集成关系)
System
Messaging
Message
MessageQueue
MessageEnumerator
MessageType
MessagePriority
...
MSMQ 示例程序
示例 1 (使用 XmlMessageFormatter)
static void Main(string[] args)
{
MessageQueue messageQueue = null;
if (MessageQueue.Exists(@".\Private$\MyQueues"))
{
messageQueue = new MessageQueue(@".\Private$\MyQueues");
messageQueue.Label = "Testing Queue";
}
else
{
messageQueue = MessageQueue.Create(@".\Private$\MyQueues");
messageQueue.Label = "Newly Created Queue";
}
messageQueue.Send("First ever Message is sent to MSMQ", "Title");
messageQueue.Formatter = new XmlMessageFormatter(new string[] { "System.String" });
//iterating the queue contents
foreach (Message msg in messageQueue)
{
string readMessage = msg.Body.ToString();
Console.WriteLine(readMessage);
//process message
}
//after all processing delete the messages
messageQueue.Purge();
Console.ReadKey();
}
示例 2 (使用 BinaryMessageFormatter)
class Program
{
static void Main(string[] args)
{
CreateQueue(@".\Private$\ImageQueue");
SendMessage();
ReceiveMessage();
Console.ReadKey();
}
public static void CreateQueue(string queuePath)
{
try
{
if (!MessageQueue.Exists(queuePath))
{
MessageQueue.Create(queuePath);
}
else
{
Console.WriteLine(queuePath + " already exists.");
}
}
catch(MessageQueueException e)
{
Console.WriteLine(e.Message);
}
}
//Send an image to a queue, using the BinaryMessageFormatter.
public static void SendMessage()
{
try
{
//Create new bitmap.
//File must be in \bin\debug or \bin\release folder
//Or a full path to its location should be given
MessageQueue myQueue = new MessageQueue(@".\Private$\ImageQueue");
Image myImage = Bitmap.FromFile("MyImage.jpg");
Message msg = new Message(myImage, new BinaryMessageFormatter());
myQueue.Send(msg);
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
//Receive a message that contains an image.
public static void ReceiveMessage()
{
try
{
MessageQueue myQueue = new MessageQueue(@".\Private$\ImageQueue");
myQueue.Formatter = new BinaryMessageFormatter();
Message myMessage = myQueue.Receive();
Bitmap myImage = (Bitmap)myMessage.Body;
myImage.Save("NewImage.jpg", ImageFormat.Jpeg);
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
}
转载:http://www.cnblogs.com/danielWise/archive/2011/02/28/1966808.html
相关推荐
msmq消息队列相关
vc编写,操作msmq的例子,封装成class,可直接调用!
NET MSMQ 完整教程 代码+文档 可直接运行
MSMQ项目总结示例代码 MSMQ项目总结\MSMQ数据库数据传输.rar MSMQ项目总结\MSMQ基类.rar MSMQ项目总结\MQ事务性消息传输.rar MSMQ项目总结\MSMQ单线程监控.rar MSMQ项目总结\MSMQ文件发送接收.rar MSMQ项目总结\MSMQ...
msmq消息队列相关
无法启动MSMQ服务
C#MSMQ 消息队列工具,MSMQ(消息队列) 前段时间研究WCF接触到了MSMQ,弄了一个小工具 分享一下
WIN7中安装MSMQ,.NET调用MSMQ
简单的msmq例子
MSMQ全称MicroSoft Message Queue,微软消息队列,是在 多个不同的应用之间实现相互通信的一种异步传输模式,【CLR】C#操作MSMQ示例
C#语言实现的MSMQ,可以通过发送和接收消息方便地与应用程序进行快速可靠的通信。
微软MSMQ 操作消息队列的例子 包括如何创建消息队列以及如何传递消息等 是较好的例子
An Sample show how to send command from an application to another one by using MSMQ
一个再简单不过的MSMQ程序,适合C#初学者。
MSMQ 客户端代码 修改URL后直接可用
MSMQ消息队列
MSMQ 学习 例子 C# Winform
MicroSoft Message Queuing(微软消息队列)是在多个不同的应用之间实现相互通信的一种异步传输模式,相互通信的应用可以分布于同一台机器上,也可以分布于...本实例采用c#实现了MSMQ实现了消息生成段和消费端的示例。
msmq应用代码,