子曾经曰过

  博客园  :: 首页  ::  ::  ::  :: 管理

什么是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();
}
}
}
posted on 2011-03-06 17:35  人的本质是什么?  阅读(559)  评论(0编辑  收藏  举报