消息队列--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) 触发器

要:本文论述了各种模式的线程(单线程、单元线程和自由线程)以及每种模式的使用方法。同时,还提供了一个使用线程的 C# 语言代码示例,以帮助您编写使用线程的应用程序。本文还讨论了多线程代码中的一些重要问...

并发队列处理 之 MSMQ

消息队列用于同步或者异步的高效处理消息队列,它应用的场景包括: 1)关键性的财务数据处理:例如,电子商务。 2)嵌入式和手持程序; 3)户外销售:例如,自动化销售程序; 4)工作流 消息队列...

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

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

上篇博客,仅仅是讲了MSMQ的简单应用,在实际的应用过程中,往往是要复杂一些的。     首先,拿评教系统来说,我设计的具体流程为下图          小编详解     1、图中的两个评教学生端...

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

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

消息队列MSMQ

MSMQ(Microsoft Message Queue)   消息队列概念的简单介绍: ●“消息”:是在两台计算机间传送的数据单位。消息可以非常简单,例如只包含文本字符串;也可以更复杂,可能包...

MSMQ--消息队列

http://blog.csdn.net/dankes/article/details/415523 MSMQ--消息队列 。用create方法创建你指定路径的消息队列,使用delet...

消息队列MSMQ

消息队列消息队列(英语:Message queue)是一种进程间通信或同一进程的不同线程间的通信方式,软件的贮列用来处理一系列的输入,通常是来自使用者。消息队列提供了异步的通信协议,每一个贮列中的纪录...

.net 消息队列MSMQ

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.M...

MSMQ消息队列安装

一、Windows 7安装、管理消息队列 1、安装消息队列    执行用户必须要有本地 Administrators 组中的成员身份,或等效身份。    具体步骤:     开始—》控制面板—...

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

namespace FSMP.PTS.MSMQ { public class MSMQHelper     {         /// ...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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