博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
转:消息队列
阅读量:7114 次
发布时间:2019-06-28

本文共 3508 字,大约阅读时间需要 11 分钟。

原文地址:

保存消息队列数据的本地磁盘地址:C:\WINDOWS\system32\msmq\storage

 

注意:

   1,要使用 windows 消息队列机制,必须在该 windows操作系统中先安装“ windows 消息队列” 组件系统光盘中)

   2,要使用启用消息队列,必须先启动“Messenger服务传输客户端和服务器之间的 NET SEND 和 Alerter 服务消息。此服务与 Windows Messenger 无关。如果服务停止,Alerter 消息不会被传输。如果服务被禁用,任何直接依赖于此服务的服务将无法启动。);

 

控件:

Form1.Designer.cs
        
private
 System.Windows.Forms.Button btnSendMessage;
        
private
 System.Windows.Forms.Button btnEnumerateMessages;
        
private
 System.Windows.Forms.TextBox txtMessages;
        
private
 System.Windows.Forms.Button btnRemoveMessages;
        
private
 System.Windows.Forms.Button btnSendHighestPriorityMessage;

 

代码:

代码
using
 System;
using
 System.Collections.Generic;
using
 System.ComponentModel;
using
 System.Data;
using
 System.Drawing;
using
 System.Text;
using
 System.Windows.Forms;
using
 System.Messaging;
using
 System.Xml.Serialization;
namespace
 MessageQueuingExample
{
    
public
 
partial
 
class
 Form1 : Form
    {
        
//
The . in the queueName represents localhost
        
private
 
const
 
string
 queueName 
=
 
"
.\\Private$\\Liuq
"
;
        
//
private const string queueName = "A405\\Private$\\Liuq";
        
//
We need this class-wide to access it in the methods.
        MessageQueue queue 
=
 
null
;
        
public
 Form1()
        {
            InitializeComponent();
        }
        
private
 
void
 Form1_Load(
object
 sender, EventArgs e)
        {
            
//
Create the queue if it doesn't exist.
            CreateQueue();
        }
        
private
 
void
 CreateQueue()
        {
            
//
Does the queue already exist??
            
if
 (MessageQueue.Exists(queueName))
                
//
Yes, it's already there.
                queue 
=
 
new
 MessageQueue(queueName);
            
else
                
//
No, we need to create it.
                queue 
=
 MessageQueue.Create(queueName, 
false
);
        }
        
private
 
void
 btnSendMessage_Click(
object
 sender, EventArgs e)
        {
            
//
Instantiate our MessageContent object.
            MessageContent message 
=
 
new
 MessageContent(
"
Hello world!
"
);
            
//
Send it to the queue.
            queue.Send(message, 
"
Sample Message
"
);
            MessageBox.Show(
"
Message sent.
"
"
MSMQ
"
);
        }
        
private
 
void
 btnEnumerateMessages_Click(
object
 sender, EventArgs e)
        {
            
//
Clear the textbox.
            
this
.txtMessages.Clear();
            
//
Get all messages on the queue.
            System.Messaging.Message[] messages 
=
 queue.GetAllMessages();
            
//
Loop through the messages.
            
foreach
 (System.Messaging.Message message 
in
 messages)
            {
                
//
Set the formatter for the message.
                message.Formatter 
=
 
new
 System.Messaging.XmlMessageFormatter(
new
 Type[
1
] { 
typeof
(MessageContent) });
                
//
Get the MessageContent object out of the message.
                MessageContent content 
=
 (MessageContent)message.Body;
                
//
Update the textbox.
                
this
.txtMessages.Text 
+=
 content.MessageText 
+
 
"
 - 
"
 
+
 content.CreationDate.ToString() 
+
 
"
\r\n
"
;
            }
        }
        
private
 
void
 btnRemoveMessages_Click(
object
 sender, EventArgs e)
        {
            
//
Purge all messages from the queue.
            queue.Purge();
            MessageBox.Show(
"
Messages purged
"
"
MSMQ
"
);
        }
        
private
 
void
 btnSendHighestPriorityMessage_Click(
object
 sender, EventArgs e)
        {
            
//
Create a XmlSerializer for the object type we're sending.
            XmlSerializer serializer 
=
 
new
 XmlSerializer(
typeof
(MessageContent));
            
//
Instantiate a new message.
            System.Messaging.Message queueMessage 
=
 
new
 System.Messaging.Message();
            
//
Set the priority to Highest.
            queueMessage.Priority 
=
 MessagePriority.Highest;
            
//
Create our MessageContent object.
            MessageContent messageContent 
=
 
new
 MessageContent(
"
Hello world - IMPORTANT!
"
);
            
//
Serialize the MessageContent object into the queueMessage.
            serializer.Serialize(queueMessage.BodyStream, messageContent);
            
//
Send the message.
            queue.Send(queueMessage, 
"
HIGH PRIORITY
"
);
            MessageBox.Show(
"
Important message sent.
"
"
MSMQ
"
);
        }
    }
}

转载于:https://www.cnblogs.com/Z-Fire/articles/2597023.html

你可能感兴趣的文章
python 编码问题
查看>>
django创建通用urlpatterns
查看>>
Squide代理服务器
查看>>
防止站外提交
查看>>
中国互联网发展趋势和特点
查看>>
C、C++中嵌入python (vs2017)
查看>>
30天提升技术人的写作力-第十二天
查看>>
python问题:IndentationError:expected an indented blo
查看>>
用vs2013编译gtest出现无法找到windows.h解决方法
查看>>
SCOM的基本概念的理解&警报的处理
查看>>
我的友情链接
查看>>
Windows 2012 - Dynamic Access Control 浅析
查看>>
Powershell 比较AD和Exchange的用户登录时间
查看>>
linux系统组成之小型RedHat little linux制作四
查看>>
我的友情链接
查看>>
How to Calculate Network and Broadcast Address
查看>>
通过7个python函数理解区块链
查看>>
Elasticsearch常用操作API
查看>>
Ambari 增加新的stack示例
查看>>
我的友情链接
查看>>