当前位置: 首页 > news >正文

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进行消息处理系列文章

转载于:https://www.cnblogs.com/doubleyan/archive/2010/01/22/2164820.html

相关文章:

  • 统计并输出所读入的单词出现的次数
  • MFC笔记(2)菜单
  • 一秒攻破20部手机验证码、黑客勒索与乱入的金元帅 | 宅客周刊
  • 【译】JS基础算法脚本:字符串结尾
  • 自动内存管理技术的思考
  • centos7 开启特定的端口
  • 每天学一点Scala之声明变量
  • 仿腾讯留言效果(拖动分页)
  • Window 包管理工具: chocolatey
  • 用于主题检测的临时日志(a6578c68-6d46-43af-917d-9f5080ef3e4d - 3bfe001a-32de-4114-a6b4-4005b770f6d7)...
  • 【iCore4 双核心板_ARM】例程五:SYSTICK定时器 实验——定时点亮LED
  • c# 错误和异常处理
  • http://blog.csdn.net/renwuqiangg/article/details/53088720
  • 利用XML序列化实现程序配置文件
  • 想要快速搭建开发测试环境?这么做就可以!
  • 【RocksDB】TransactionDB源码分析
  • 4月23日世界读书日 网络营销论坛推荐《正在爆发的营销革命》
  • AHK 中 = 和 == 等比较运算符的用法
  • Bytom交易说明(账户管理模式)
  • CSS 三角实现
  • echarts花样作死的坑
  • Elasticsearch 参考指南(升级前重新索引)
  • JAVA并发编程--1.基础概念
  • JS进阶 - JS 、JS-Web-API与DOM、BOM
  • js学习笔记
  • leetcode讲解--894. All Possible Full Binary Trees
  • linux学习笔记
  • mysql 5.6 原生Online DDL解析
  • node学习系列之简单文件上传
  • PHP的类修饰符与访问修饰符
  • spring学习第二天
  • use Google search engine
  • 对超线程几个不同角度的解释
  • 七牛云假注销小指南
  • 前端技术周刊 2018-12-10:前端自动化测试
  • 前端技术周刊 2019-01-14:客户端存储
  • 前端相关框架总和
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • 我有几个粽子,和一个故事
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • $(function(){})与(function($){....})(jQuery)的区别
  • (7)STL算法之交换赋值
  • (Matalb分类预测)GA-BP遗传算法优化BP神经网络的多维分类预测
  • (Python) SOAP Web Service (HTTP POST)
  • (二)丶RabbitMQ的六大核心
  • (十三)Maven插件解析运行机制
  • (四)c52学习之旅-流水LED灯
  • (一)ClickHouse 中的 `MaterializedMySQL` 数据库引擎的使用方法、设置、特性和限制。
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • (转)EXC_BREAKPOINT僵尸错误
  • .class文件转换.java_从一个class文件深入理解Java字节码结构
  • .NET Core 控制台程序读 appsettings.json 、注依赖、配日志、设 IOptions
  • .net 流——流的类型体系简单介绍
  • .NET/C# 使用反射注册事件
  • .NET中的Event与Delegates,从Publisher到Subscriber的衔接!