消息队列--MSMQ应用(一)

原创 2016年08月30日 17:50:16

    消息队列是什么?

    消息队列是在消息传输过程中保存消息的容器。消息队列管理器在将消息从它的源中继到它的目标时充当中间人 ,队列的主要目的是提供路由并保证消息的传递,如果发送消息时接收者不可用,消息队列会保留消息,直到可以成功的传递它。


    MSMQ是什么?

    MSMQ是在多个不同的应用之间实现相互通信的一种异步传输模式,相互通信的应用可以分布于同一台机器上,也可以分布于相连的网络空间中的任一位置。消息的发送者把自己想要发送的信息放入一个容器中,然后把它保存在一个系统共用的消息队列中,本地或者异地的消息接收程序再从该队列中取出发给他的消息进行处理。


    小编解读

    MSMQ是微软封装好的,消息队列的一种实现形式。


    ITOO用法解读

    

    上图中简要说明了MSMQ在ITOO中的位置,这里需要说的是

    1、mysql集群是布置在206和207上的,这里为了是图形简单明确把它抽象了出来。

    2、在没有MSMQ时,用户提交的数据会直接写到数据库,当同时有大量请求时,高并发严重,数据库产生存取瓶颈,程序崩溃。

    3、在使用MSMQ时,大量用户请求数据入队,进入消息队列中,自动排队,利用出队操作,想数据库中写入数据。

    4、当数据库发生故障时,用户提交的数据存储在消息队列中,程序正常运行,不影响用户体验,数据库恢复正常后,再做出队操作,向数据库中写入数据。


    MSMQ简单应用


        创建队列

        

<span style="font-size:18px;">            try
            {
                //创建队列

                if (!MessageQueue.Exists(@".\private$\myQueuetest"))
                {
                    MessageQueue.Create(@".\private$\myQueuetest");
                }
                else
                {
                    
                    MessageQueue myQueuetest = new MessageQueue(".\\private$\\myQueuetest");
                    //MessageBox.Show(@".\private$\myQueuetest" + "已经存在!");
                }
            }
            catch (MessageQueueException ex)
            {
                MessageBox.Show(ex.Message);
            }
</span>

    

        发送消息

<span style="font-size:18px;">            try
            {
                //连接到本地的队列
                //MessageQueue myQueuetest = new MessageQueue(".\\private$\\myQueuetest");
                MessageQueue myQueuetest = new MessageQueue(@"FormatName:Direct=TCP:192.168.22.232\private$\myQueuetest");
                System.Messaging.Message myMessage = new System.Messaging.Message();
                myMessage.Body = "zhengtao";
                myMessage.Formatter = new XmlMessageFormatter(new Type[] { typeof(string) });
                //发送消息到队列中
                myQueuetest.Send(myMessage);
                MessageBox.Show("发送成功");
            }
            catch (ArgumentException ex)
            {
                MessageBox.Show(ex.Message);
            }
</span>


        接收消息

<span style="font-size:18px;">            //连接到本地队列
            //MessageQueue myQueuetest = new MessageQueue(".\\private$\\myQueuetest");
            //连接远程队列
            MessageQueue myQueuetest = new MessageQueue(@"FormatName:Direct=TCP:192.168.22.232\private$\myQueuetest");
            myQueuetest.Formatter = new XmlMessageFormatter(new Type[] { typeof(string) });
            try
            {
                //从队列中接收消息
                System.Messaging.Message myMessage = myQueuetest.Receive();
                string context = (string)myMessage.Body; //获取消息的内容
                MessageBox.Show("消息内容为:" + context);
            }
            catch (MessageQueueException ex)
            {
                MessageBox.Show(ex.Message);
            }
            catch (InvalidCastException ex)
            {
                MessageBox.Show(ex.Message);
            }
</span>


    这篇博客仅仅是描述了关于MSMQ的一些基本知识,以及一些最简单的用法,在实际的应用中我综合了多线程、事务与MSMQ一起使用,详情请看后续博客。

版权声明:本文为博主原创文章,未经博主允许不得转载。

【消息队列】MSMQ(二)——消息处理流程

一、前言      上一篇博客简单的向大家介绍了一下MSMQ的一些简单的概念。所以在这篇博客中小编就和大家一起进行一些对消息的处理,包括了创建消息、发送消息、接收消息、异步消息处理。其中整体上还是比较...
  • kisscatforever
  • kisscatforever
  • 2017年03月18日 20:13
  • 1166

MSMQ消息队列与WCF MSMQ的认识与使用

先说一下MSMQ MSMQ全称MicroSoft Message Queue,微软消息队列,是在多个不同的应用之间实现相互通信的一种异步传输模式,相互通信的应用可以分布于同一台机器上,也可以分布...
  • xiaoyiyz
  • xiaoyiyz
  • 2015年03月19日 11:20
  • 2143

MSMQ 消息队列、监听MSMQ消息、消息扫描

namespace FSMP.PTS.MSMQ { public class MSMQHelper     {         ///          /// MSMQ服务地址配置       ...
  • michaelgong
  • michaelgong
  • 2015年01月26日 09:22
  • 8123

消息队列(MSMQ)

System.Messaging命名空间包含的类可以用windows操作系统的Message Queuing功能读写信息。消息传送功能可以在断开连接的环境下作用。在同步编程中,调用一个方法时,调用者必...
  • jinzhengquanqq
  • jinzhengquanqq
  • 2010年09月09日 00:09
  • 9583

MSMQ 学习总结

MSMQ(MicroSoftMessage Queue,微软消息队列)是在多个不同的应用之间实现相互通信的一种异步传输模式,相互通信的应用可以分布于同一台机器上,也可以分布于相连的网络空间中的任一...
  • u010701641
  • u010701641
  • 2016年03月09日 15:50
  • 2754

MSMQ消息队列

  • 2006年11月09日 11:30
  • 51KB
  • 下载

消息队列(MSMQ)

  • 2014年03月06日 19:03
  • 55KB
  • 下载

ASP.NET中进行消息处理(MSMQ)

MSMQ是微软消息队列的英文缩写。那么什么是消息队列?这些介绍网上一大片这里就不多说了。本文对于大虾级的人物来说这只是小玩意而已,对于初学者来说这文章还是有一定的帮助,希望路过的大虾们别笑话我班门弄斧...
  • CsethCRM
  • CsethCRM
  • 2014年04月14日 10:23
  • 1203

如何安装消息队列(MSMQ)

1.在 Windows Server 2008 or Windows Server 2008 R2 上安装消息队列 4.0 在服务器管理器中,单击“功能”。 在“功能摘要”下的右窗...
  • daiyue945
  • daiyue945
  • 2011年08月25日 10:26
  • 7805

多线程消息队列 (MSMQ) 触发器

 要:本文论述了各种模式的线程(单线程、单元线程和自由线程)以及每种模式的使用方法。同时,还提供了一个使用线程的 C# 语言代码示例,以帮助您编写使用线程的应用程序。本文还讨论了多线程代码中的一些重要...
  • godson_h
  • godson_h
  • 2008年12月30日 13:38
  • 5010
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:消息队列--MSMQ应用(一)
举报原因:
原因补充:

(最多只允许输入30个字)