消息队列的主要特点在于它分离发送和接收应用程序,使其不必同时运行。这意味着一个应用程序能够把数据存放在队列中,而不用理会队列中的项目是否被传送到接收应用程序。
消息队列包含两个重要的概念:队列和消息。队列用于存放消息,一个队列可以存储多个消息。.NET提供了两个相关的类:MessageQueue类用于管理队列,Message类用于管理消息。
一、安装消息队列组件
①.在控制面板中打开'添加或删除程序",打开"添加/删除Windows组件":

②.双击"应用程序服务器",找到并钩选"消息队列",然后安装:

③.安装完后在计算机管理的"服务和应用程序"下可看到它:

二、使用消息队列
1.简单消息发送和接收
using System;
using System.Messaging;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string path = @".\private$\MzwuCom";
MessageQueue queue;
Message msg;
//创建队列
if (!MessageQueue.Exists(path))
queue = MessageQueue.Create(path);
else
queue = new MessageQueue(path);
//往队列发送消息
queue.Send("www");
queue.Send("mzwu");
queue.Send("com");
//接收消息
queue.Formatter = new XmlMessageFormatter(new string[] { "System.String" });
try { msg = queue.Receive(TimeSpan.FromSeconds(5)); } //Receive每次取第一个消息,并在队列中将其删除
catch { msg = null; }
while (msg != null)
{
Console.WriteLine(msg.Body.ToString());
try { msg = queue.Receive(TimeSpan.FromSeconds(5)); }
catch { msg = null; }
}
Console.ReadKey();
}
}
}2. 复杂消息发送和接收
using System;
using System.IO;
using System.Messaging;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string path = @".\private$\MzwuCom";
MessageQueue queue;
Message msg;
FileInfo info;
//创建队列
if (!MessageQueue.Exists(path))
queue = MessageQueue.Create(path);
else
queue = new MessageQueue(path);
//往队列发送消息
msg = new Message();
msg.Formatter = new BinaryMessageFormatter();
msg.Body = new FileInfo(@"c:\www.txt");
queue.Send(msg);
msg.Body = new FileInfo(@"c:\mzwu.txt");
queue.Send(msg);
msg.Body = new FileInfo(@"c:\com.txt");
queue.Send(msg);
//接收消息
queue.Formatter = new BinaryMessageFormatter();
try { msg = queue.Receive(TimeSpan.FromSeconds(5)); }
catch { msg = null; }
while (msg != null)
{
info = msg.Body as FileInfo;
if (info != null)
Console.WriteLine(info.Name);
try { msg = queue.Receive(TimeSpan.FromSeconds(5)); }
catch { msg = null; }
}
Console.ReadKey();
}
}
}
评论(0)
暂无评论。