“消息队列”是 Microsoft 的消息处理技术,它在任何安装 Microsoft Windows 的计算机组合中,为任何应用程序提供消息处理和消息队列功能,无论这些计算机是否在同一个网络上或者是否同时联机。
消息队列使用步骤:
1.Micorsoft开启消息队列服务
打开控制面板---程序---程序功能----启动或关闭windows功能---选择“Microsoft Message Queue(MSMQ)服务器”的勾选。
2.配饰消息队列服务---建立通道
使用快捷键Win+X,选择计算机管理,在服务和应用程序中找到消息队列。
打开消息队列,选择专有队列,右击新建—专有队列,如图:
输入队列名称:例如:TransportMessage
3.代码实现原理:
在发送方A:
1) 建立队列管理器
2) 定义本地传输队列
3) 创建远程队列
4) 定义发送通道
在接收方B:
1) 建立队列管理器
2) 定义本地队列
3) 创建接收通道
代码Demo:
建立两个WindowsFormsApplication1和2,分别建立窗体,一为接受方,一为发送方。
发送方代码:
<span style="font-family:Verdana;font-size:14px;">using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Messaging;
namespace WindowsFormsApplication2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//发¤¡é送¨ª端?
private voidbutton1_Click(object sender, EventArgs e)
{
// 打䨰开a通ª¡§道̨¤,ê?严?谨¡Â点Ì?应®|该?首º¡Á先¨¨判D断?是º?否¤?存ä?在¨²改?通ª¡§道̨¤,ê?如¨?否¤?则¨°重?新?创ä¡ä建¡§。¡ê
System.Messaging.MessageQueue queue =new System.Messaging.MessageQueue(".\\Private$\\TransportMessage");
// Create message:êo创ä¡ä建¡§消?息¡é队¨®列¢D
System.Messaging.Message message = new System.Messaging.Message();
//获?取¨?消?息¡é
message.Body = textBox1.Text.Trim();
//序¨°列¢D化¡¥消?息¡é
message.Formatter = newSystem.Messaging.XmlMessageFormatter(new Type[] { typeof(string) });
// 发¤¡é送¨ª消?息¡é
queue.Send(message);
}
}
}
</span>
接受方:
<span style="font-family:Verdana;font-size:14px;">using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Messaging;
namespace WindowsFormsApplication3
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//接¨®受º¨¹端?
private voidbutton1_Click(object sender, EventArgs e)
{
// Open queue:êo打䨰开a通ª¡§道̨¤
System.Messaging.MessageQueue queue = newSystem.Messaging.MessageQueue(".\\Private$\\TransportMessage");
// Peek message:接¨®受º¨¹消?息¡é队¨®列¢D信?息¡é
System.Messaging.Message message =queue.Peek();
//转Áa换?消?息¡é
message.Formatter = newSystem.Messaging.XmlMessageFormatter(new Type[] { typeof(string) });
//读¨¢取¨?消?息¡é
textBox1.Text = message.Body.ToString();
}
}
}
</span>
同时启动项目项目,得到如图:
在send方输入信息,在recive方接受信息。
这样,一个简单的MQ 应用就实现了,这个只是很简单的Demo,但是包含了基本的步骤,更多的研究在后面的实践中。