zoukankan      html  css  js  c++  java
  • MSMQ(Microsoft Message Queue,微软消息队列) Asp.Net 简单示例

    系统: Windows XP

    1.安装MSMQ

    控制面板—>添加安装程序

    clip_image002

    2. 配置MSMQ

    clip_image004

    右键点击新建MQ,属性,可以看到其完整访问路径

    clip_image006

    3.好了,新建一个ASP.net 的应用程序,并添加引用System.Messaging ,编写代码如下

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Configuration;
    
    using System.Messaging;
    
    namespace WebAppTestMSMQ
    {
        public partial class _Default : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
               txtPath.Text = ConfigurationManager.AppSettings["path"].ToString();
            }
    
            protected void Button1_Click(object sender, EventArgs e)
            {
                //完整队列格式为:  计算机名\private$\队列名称 (专用队列)
                MessageQueue mq = new MessageQueue(txtPath.Text.Trim());
                System.Messaging.Message msg = new System.Messaging.Message();
                msg.Body = txtSend.Text.Trim() + " " + DateTime.Now.ToString();
    
                //消息格式为string
                msg.Formatter = new System.Messaging.XmlMessageFormatter(new Type[] { typeof(string) });
    
                try
                {
                    mq.Send(msg);
                }
                catch (Exception ex)
                {
                    
                }
    
            }
    
            protected void Button2_Click(object sender, EventArgs e)
            {
                MessageQueue mq = new System.Messaging.MessageQueue(txtPath.Text.Trim());
                //同步接收,直到得到一条消息为止,如果消息队列为空,会一直阻塞
                System.Messaging.Message msg = mq.Receive();
                msg.Formatter = new System.Messaging.XmlMessageFormatter(new Type[] { typeof(string) });
                this.txtReceive.Text = "[" + DateTime.Now.ToString() + "]: " + msg.Body.ToString();
    
            }
        }
    }

    其中配置文件中的路径就是之前看到的位置,前面的计算机名也可以是ip地址

    clip_image008

    F5,运行程序,在发送信息框中输入信息,点击发送,将消息发送到队列,再点击获取消息按钮,从队列中获取消息。

    消息的接收又分成同步和异步方式两种,同步接收在规定时间内从消息队列中取出收到的第一条消息,当消息队列中没有消息时,程序处于等待状态;异步接收方式则是定义了一个事件处理函数,当消息队列中第一个消息到达时立即触发该函数。  

    在计算机管理中,可以查看队列中的内容

    image

    关于队列的属性   
            path属性:它可以决定引用队列的三种方式,路径引用、格式名引用、标识引用   
            category属性:标识当前使用的队列的类型。Category是队列所有者定义的GUID值。该GUID值可以有GUID生成工具产生或者是用户自定义的数字值。GUID值是唯一的,这样才可以根据GUID值,把多个消息队列划分为不同的类别(category)。   
           跟发送数据类型相关的属性   
            Formatter属性:决定在一个队列中如何发送和接收消息的顺序,以及可以在一个消息中发送什么样的内容。   
           和队列交互相关的属性   
            DenyShareReceive属性:决定同一时间内只有一个部件能够访问消息队列中的消息。   
            CanRead和CanWrite属性:决定队列是否可以被读取或者是写入。   
            MaximumQueueSize和MaximumJournalSize属性:以千字节为单位设置一个队列(日志队列)的消息最大容纳量。一旦接收的消息到达这个容量,新的消息将不再被接收。   
            一般情况下,消息队列的最大值为消息队列管理员所设置,如果这个值没有控制的话,那么缺省的消息队列最大容量将是无限制的。   
            UseJournalQueue属性::设置是否将收到的消息拷贝到日志消息队列中去。

    源代码:msmqtest.rar

    博客园有一位博友写的很好的,一定要看看:

    ASP.NET中使用MSMQ进行消息处理系列文章

    冯瑞涛
  • 相关阅读:
    Informix IDS 11零碎规画(918考试)认证指南,第 7 部分: IDS复制(15)
    Informix IDS 11琐屑管理(918考试)认证指南,第 7 局部: IDS复制(10)
    近期招聘
    Classes 单元下的公用函数目录
    Graphics 单元下的公用函数目录
    CnPack 使用的组件命名约定
    Windows 单元下的公用函数目录(RZ_)
    Variants 单元下的公用函数目录
    StrUtils 单元下的公用函数目录
    Math 单元下的公用函数目录
  • 原文地址:https://www.cnblogs.com/finehappy/p/1654195.html
Copyright © 2011-2022 走看看