ASP.NET 操作消息队列
1public partial class _Default : System.Web.UI.Page
2{
3 private string queuePath = @".\Private$\mydemoqueues";
4 protected void Page_Load(object sender, EventArgs e)
5 {
6 //异步获取消息
7 GetQueueMessage();
8 }
9 protected void Button1_Click(object sender, EventArgs e)
10 {
11 MessageQueue mq;
12 if(MessageQueue.Exists(@".\Private$\mydemoqueues"))
13 {
14 mq=new MessageQueue(@".\Private$\mydemoqueues");
15 }
16 else
17 {
18 mq = MessageQueue.Create(@".\Private$\mydemoqueues");
19 }
20 BinaryWriter writer=new BinaryWriter(new MemoryStream());
21 writer.Write(this.TextBox1.Text.Trim());
22 Message msg=new Message();
23 msg.BodyStream = writer.BaseStream;
24 msg.Label = "发送信息,飘渺峰测试";
25 mq.Send(msg);
26
27 }
28 protected void Button2_Click(object sender, EventArgs e)
29 {
30 MessageQueue mq;
31 Message msg=new Message();
32 string result;
33 if (MessageQueue.Exists(queuePath))
34 {
35 mq=new MessageQueue(queuePath);
36 }
37 else
38 {
39 mq = MessageQueue.Create(queuePath);
40 }
41 try
42 {
43 mq.MaximumQueueSize = 1000000;
44 msg = mq.Receive(new TimeSpan(0, 0, 3));
45 BinaryReader br=new BinaryReader(msg.BodyStream);
46 result=new string(br.ReadChars(Convert.ToInt32(msg.BodyStream.Length)));
47 this.TextBox2.Text = result;
48 mq.Close();
49 }
50 catch (Exception)
51 {
52 Response.Write("没有消息可以接收!");
53 }
54 }
55 /// <summary>
56 /// 异步获取消息队列
57 /// </summary>
58 private void GetQueueMessage()
59 {
60 MessageQueue mq=new MessageQueue(queuePath);
61 mq.Formatter = new XmlMessageFormatter(new Type[] {typeof (string)});
62 mq.PeekCompleted+=new PeekCompletedEventHandler(MyMessageCompleted);
63 mq.BeginPeek();
64 return;
65 }
66
67 private void MyMessageCompleted(object sender, PeekCompletedEventArgs e)
68 {
69 MessageQueue mq = (MessageQueue) sender;
70 Message msg = mq.EndPeek(e.AsyncResult);
71 BinaryReader reader=new BinaryReader(msg.BodyStream);
72 string temp=new string(reader.ReadChars(Convert.ToInt32(msg.BodyStream.Length)));
73 //Response.Write("这是异步队列信息:"+temp);
74 this.TextBox2.Text = temp;
75 mq.BeginPeek();
76 return;
77 }
78
79 private void SendMessage()
80 {
81 MessageQueue mq;
82 if (MessageQueue.Exists(@".\Private$\mydemoqueues"))
83 {
84 mq = new MessageQueue(@".\Private$\mydemoqueues");
85 }
86 else
87 {
88 mq = MessageQueue.Create(@".\Private$\mydemoqueues");
89 }
90 BinaryWriter writer = new BinaryWriter(new MemoryStream());
91 writer.Write("sdfsdfsd");
92 Message msg = new Message();
93 msg.BodyStream = writer.BaseStream;
94 msg.Label = "发送信息,飘渺峰测试";
95 mq.Send(msg);
96 }
2{
3 private string queuePath = @".\Private$\mydemoqueues";
4 protected void Page_Load(object sender, EventArgs e)
5 {
6 //异步获取消息
7 GetQueueMessage();
8 }
9 protected void Button1_Click(object sender, EventArgs e)
10 {
11 MessageQueue mq;
12 if(MessageQueue.Exists(@".\Private$\mydemoqueues"))
13 {
14 mq=new MessageQueue(@".\Private$\mydemoqueues");
15 }
16 else
17 {
18 mq = MessageQueue.Create(@".\Private$\mydemoqueues");
19 }
20 BinaryWriter writer=new BinaryWriter(new MemoryStream());
21 writer.Write(this.TextBox1.Text.Trim());
22 Message msg=new Message();
23 msg.BodyStream = writer.BaseStream;
24 msg.Label = "发送信息,飘渺峰测试";
25 mq.Send(msg);
26
27 }
28 protected void Button2_Click(object sender, EventArgs e)
29 {
30 MessageQueue mq;
31 Message msg=new Message();
32 string result;
33 if (MessageQueue.Exists(queuePath))
34 {
35 mq=new MessageQueue(queuePath);
36 }
37 else
38 {
39 mq = MessageQueue.Create(queuePath);
40 }
41 try
42 {
43 mq.MaximumQueueSize = 1000000;
44 msg = mq.Receive(new TimeSpan(0, 0, 3));
45 BinaryReader br=new BinaryReader(msg.BodyStream);
46 result=new string(br.ReadChars(Convert.ToInt32(msg.BodyStream.Length)));
47 this.TextBox2.Text = result;
48 mq.Close();
49 }
50 catch (Exception)
51 {
52 Response.Write("没有消息可以接收!");
53 }
54 }
55 /// <summary>
56 /// 异步获取消息队列
57 /// </summary>
58 private void GetQueueMessage()
59 {
60 MessageQueue mq=new MessageQueue(queuePath);
61 mq.Formatter = new XmlMessageFormatter(new Type[] {typeof (string)});
62 mq.PeekCompleted+=new PeekCompletedEventHandler(MyMessageCompleted);
63 mq.BeginPeek();
64 return;
65 }
66
67 private void MyMessageCompleted(object sender, PeekCompletedEventArgs e)
68 {
69 MessageQueue mq = (MessageQueue) sender;
70 Message msg = mq.EndPeek(e.AsyncResult);
71 BinaryReader reader=new BinaryReader(msg.BodyStream);
72 string temp=new string(reader.ReadChars(Convert.ToInt32(msg.BodyStream.Length)));
73 //Response.Write("这是异步队列信息:"+temp);
74 this.TextBox2.Text = temp;
75 mq.BeginPeek();
76 return;
77 }
78
79 private void SendMessage()
80 {
81 MessageQueue mq;
82 if (MessageQueue.Exists(@".\Private$\mydemoqueues"))
83 {
84 mq = new MessageQueue(@".\Private$\mydemoqueues");
85 }
86 else
87 {
88 mq = MessageQueue.Create(@".\Private$\mydemoqueues");
89 }
90 BinaryWriter writer = new BinaryWriter(new MemoryStream());
91 writer.Write("sdfsdfsd");
92 Message msg = new Message();
93 msg.BodyStream = writer.BaseStream;
94 msg.Label = "发送信息,飘渺峰测试";
95 mq.Send(msg);
96 }