码迷,mamicode.com
首页 > Windows程序 > 详细

C# 消息队列

时间:2016-08-12 19:53:22      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:

阅读目录

1. 消息队列是什么?
2. 常见的消息队列框架有哪些?
3. MSMQ如何使用?

 

消息队列是什么

  简单的理解就是将消息添加一个队列中,使用时在从这个队列中取出来。那么消息什么?队列又是什么呢?

  消息:说白了就是交互的内容,可以是文字、图片、视频等等。
  队列:一种先进先出的存储格式。


  消息队列提供保证消息传递,高效的路由、安全和基于优先级的消息。它可以用来实现需要高性能的异步和同步场景的解决方案。

常见的消息队列框架有哪些?
  Window系统下自带了微软自家的消息队列框架——MSMQ,是在多个不同的应用之间实现相互通信的一种异步传输模式,相互通信的应用可以分布于同一台机器上,也可以分布于相连的网络空间中的任一位置。它的实现原理是:消息的发送者把自己想要发送的信息放入一个容器中(我们称之为Message),然后把它保存至一个系统公用空间的消息队列(Message Queue)中;本地或者是异地的消息接收程序再从该队列中取出发给它的消息进行处理。

  除此之外网上还有很多开源的消息队列框架,例如RabbitMQ,具体可参考其官网:http://www.rabbitmq.com/

MSMQ如何使用
  下面详细介绍下MSMQ的使用方法。

  一、安装MSMQ

  首先,看看是否已经启用MSMQ服务,打开服务窗体,如果能如找到MSMQ服务,说明已经启用,如下图:

  技术分享

  如果没有看到该服务,点击 控制面板-打开或关闭Windows功能,选中MSMQ项,再点击“确定”按钮即可启用MSMQ服务,如下图:

  技术分享

 

  二、支持类型

  MSMQ 支持两种类型的消息: XML 和二进制。

 

  三、示例代码  

技术分享
using System;
using System.Messaging;

namespace QiDaShengDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            MessageQueue messageQueue = null;
            //判断指定的路径是否存在“消息队列”队列,如果存在直接初始化,并设置好说明
            //否则在指定的路径中创建“消息队列”
            if (MessageQueue.Exists(@".\Private$\MyQueues"))
            {
                messageQueue = new MessageQueue(@".\Private$\MyQueues");
                messageQueue.Label = "Testing Queue";
            }
            else
            {
                messageQueue = MessageQueue.Create(@".\Private$\MyQueues");
                messageQueue.Label = "New Create Queue";
            }

            //发送对象到消息队列中,并设置好标签
            messageQueue.Send("First ever Message is sent to MSMQ", "Title");
            //设置消息类型
            messageQueue.Formatter = new XmlMessageFormatter(new string[] { "System.String" });

            foreach (Message msg in messageQueue)
            {
                string readMessage = msg.Body.ToString();
                Console.WriteLine(readMessage);
            }
            messageQueue.Purge();

            Console.Read();
        }
    }
}
View Code

 

参考:

[1].http://www.cnblogs.com/tenghoo/archive/2009/11/05/1596456.html

[2].http://www.cnblogs.com/danielWise/archive/2011/02/28/1966808.html

[3].http://www.cnblogs.com/gossip/p/4373547.html

[4].http://www.cnblogs.com/shanyou/archive/2012/10/27/2742979.html

C# 消息队列

标签:

原文地址:http://www.cnblogs.com/qianxingdewoniu/p/5766113.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!