什么是MSMQ?
字面意思是微软消息队列,我的理解是这样的,MS的操作系统是基于消息发送的系统,消息队列是指不是即时处理的,可以延后处理的一种消息。
WIN7 先安装 MSMQ,先来一句
System.Messaging.MessageQueue.Create(@".\private$\mymsmq", false);
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 MSMQExample
{
public partial class Form1 : Form
{
public const string queenpath = @".\private$\mymsmq"; //公有队列需要在域环境下建立,而域是需要Server版系统才能建立,WIN7也是客户端OS,SERVER2008才支持WIN7
public static System.Messaging.MessageQueue queen = System.Messaging.MessageQueue.Exists(queenpath) ? new MessageQueue(queenpath) : System.Messaging.MessageQueue.Create(queenpath); //私有队列
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
//System.Messaging.MessageQueue.Create(@"mymachine\publicmsmq"); //不支持?如何创建共有队列
queen.Send(richTextBox1.Text + DateTime.Now.ToShortDateString()); //send 里是个object对象,能放哪些东西呢?
queen.Send("数据库执行带参数的语句");
}
private static void queen_ReceiveCompleted(object sender, ReceiveCompletedEventArgs e)
{
MessageQueue q = sender as MessageQueue;
System.Messaging.Message message = q.EndReceive(e.AsyncResult);
q.BeginReceive();
MessageBox.Show("接受完成!");
}
private void button2_Click(object sender, EventArgs e)
{
System.Messaging.Message [] message = queen.GetAllMessages();
foreach (System.Messaging.Message m in message)
{
richTextBox2.Text += m.Body.ToString();
}
//richTextBox2.Text = queen.Receive().Body.ToString();
//当接受MSMQ消息时可以执行数据库的增删改查
}
private void button3_Click(object sender, EventArgs e)
{
queen.ReceiveCompleted += new ReceiveCompletedEventHandler(queen_ReceiveCompleted);
queen.BeginReceive();
}
}
}