`
java032
  • 浏览: 86191 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

转载 MSMQ

 
阅读更多

1) MSMQ概述

MSMQ 表示微软消息队列服务。MSMQ 可以工作在在线或者离线场景,并提供异步编程功能。如果客户端离线,MSMQ将会是最合适的方法,这是因为服务端不需要等待客户端读取数据并向服务端返回确认。


(2) 确定MSMQ 是否已经安装

通过在运行窗口执行"Services",然后找到Message Queuing. 如果没有就说明MSMQ 没有安装。

(3) MSMQ 安装

控制面板 -> 添加/删除Windows 组件 -- 选择消息队列 - 下一步

这将在你的系统中安装MSMQ,然后你可以通计算机管理来进行确认。

控制面板 -> 管理工具 -> 计算机管理 -> 服务和应用 -> 消息队列,

你将看到出栈队列,私有队列,系统队列,触发器。

(4) 消息类型

MSMQ 支持两种类型的消息: XML 和二进制, 下面的例子分别使用XML的二进制消息。

(5) MSMQ 架构(命名空间集成关系)

System
  Messaging
    Message
    MessageQueue
    MessageEnumerator
    MessageType
    MessagePriority
    ...

MSMQ 示例程序


示例 1 (使用 XmlMessageFormatter)
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 = "Newly Created Queue";
    }
    messageQueue.Send("First ever Message is sent to MSMQ", "Title");
 
    messageQueue.Formatter = new XmlMessageFormatter(new string[] { "System.String" });
    //iterating the queue contents
    foreach (Message msg in messageQueue)
    {
        string readMessage = msg.Body.ToString();
        Console.WriteLine(readMessage);
        //process message
    }
    //after all processing delete the messages
    messageQueue.Purge();
    Console.ReadKey();
}


示例 2 (使用 BinaryMessageFormatter)
class Program
    {
        static void Main(string[] args)
        {
            CreateQueue(@".\Private$\ImageQueue");
            SendMessage();
            ReceiveMessage();
            Console.ReadKey();
        }
 
        public static void CreateQueue(string queuePath)
        {
            try
            {
                if (!MessageQueue.Exists(queuePath))
                {
                    MessageQueue.Create(queuePath);
                }
                else
                {
                    Console.WriteLine(queuePath + " already exists.");
                }
            }
            catch(MessageQueueException e)
            {
                Console.WriteLine(e.Message);
            }
        }
 
        //Send an image to a queue, using the BinaryMessageFormatter.
        public static void SendMessage()
        {
            try
            {
                //Create new bitmap.
                //File must be in \bin\debug or \bin\release folder
                //Or a full path to its location should be given
 
                MessageQueue myQueue = new MessageQueue(@".\Private$\ImageQueue");
                Image myImage = Bitmap.FromFile("MyImage.jpg");
                Message msg = new Message(myImage, new BinaryMessageFormatter());
                myQueue.Send(msg);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
 
        //Receive a message that contains an image.
        public static void ReceiveMessage()
        {
            try
            {
                MessageQueue myQueue = new MessageQueue(@".\Private$\ImageQueue");
                myQueue.Formatter = new BinaryMessageFormatter();
                Message myMessage = myQueue.Receive();
                Bitmap myImage = (Bitmap)myMessage.Body;
                myImage.Save("NewImage.jpg", ImageFormat.Jpeg);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
    }

 

转载:http://www.cnblogs.com/danielWise/archive/2011/02/28/1966808.html

 

分享到:
评论

相关推荐

    msmq消息队列相关

    **MSMQ消息队列详解** MSMQ,全称为Microsoft Message Queuing,是微软提供的一种异步通信技术。它允许应用程序在不可用的网络环境中发送消息,确保数据的可靠传输,即使接收方暂时离线也能正常工作。MSMQ的核心...

    msmq.rar_java msmq_java 消息队列_java消息队列_msmq_消息队列

    Java MSMQ(Message Queuing)是Java编程中用于实现异步通信的一种技术,它基于微软的MSMQ(Microsoft Message Queue)服务。在分布式系统中,消息队列扮演着至关重要的角色,因为它允许不同组件之间解耦,使得系统...

    一个封装MSMQ操作的类.zip_MSMQ C++_VC msmq_msmq_msmq c_vc ms

    MSMQ,全称为Microsoft Message Queuing,是微软提供的一种可靠的消息队列技术,它允许应用程序在不可靠的网络环境中进行通信。在这个压缩包文件中,包含的是一个使用C++编写的MSMQ操作类的示例,它已经被封装好,...

    无法启动MSMQ服务

    ### 无法启动MSMQ服务的知识点详解 #### 一、MSMQ简介 消息队列服务(Message Queuing Service,简称MSMQ)是Microsoft提供的一种消息传递技术,它允许应用程序跨网络进行可靠的消息发送与接收。MSMQ支持异步通信...

    NET中MSMQ完整教程+Msmq.PerfermanceTest

    .NET中的MSMQ(Message Queuing)是微软提供的一种可靠的消息传递技术,用于应用程序之间的异步通信。本教程全面涵盖了MSMQ的关键概念和技术,包括它的设计原理、安装与配置、编程接口以及性能测试。 首先,MSMQ是...

    Java通过MsmqJava读写MSMQ源码及例子

    Java通过MsmqJava读写MSMQ是一种在Java应用程序中利用消息队列(MSMQ)技术的方法。MSMQ,全称Microsoft Message Queuing,是由微软提供的一个可靠的消息传递服务,用于在不同网络环境、应用程序之间或者在不可靠的...

    MSMQ__Demo

    **MSMQ 概述** MSMQ,全称为 Microsoft Message Queuing,是微软提供的一种消息队列技术,用于在分布式系统中可靠地传递消息。MSMQ 使得应用程序可以在网络不稳定或者目标系统不可用的情况下,仍然能够发送和接收...

    MSMQ实例源码 C#

    MSMQ(Microsoft Message Queuing)是微软提供的一种异步消息传递技术,用于在分布式系统中进行可靠的信息交换。它允许应用程序之间通过消息队列进行通信,即使这些应用程序在网络不稳定或者暂时不可用的情况下也能...

    Msmq自用-请勿下载

    ** MSMQ 概述 ** MSMQ,全称为Microsoft Message Queuing,是微软提供的一种消息队列技术。它允许应用程序在不可靠的网络环境中可靠地交换数据,即使发送方和接收方之间的通信暂时中断,消息也能被存储并稍后传递。...

    msmq消息队列相关demo

    MSMQ,全称为Microsoft Message Queuing,是微软提供的一种异步通信技术,它允许应用程序在不同时刻通过网络进行通信,即使发送方和接收方在通信时不在线也能完成消息传递。这种技术对于构建可靠且容错的分布式系统...

    C#MSMQ 消息队列工具

    **C# MSMQ 消息队列工具详解** 在IT领域,消息队列(Message Queue,简称MQ)是一种常用于应用程序之间异步通信的技术。MSMQ(Microsoft Message Queuing)是微软公司提供的一种消息队列服务,它允许分布式系统中的...

    MSMQ C++ API 例子

    MSMQ,全称为Microsoft Message Queuing,是一种由微软提供的可靠且异步的消息传递技术。它允许应用程序在不直接通信的情况下交换消息,特别是在网络不稳定或目标系统不可用时,能够存储并转发消息,确保数据传输的...

    MSMQ使用总结(事务性、线程监控、文件发送接收和远程信息交互)

    **MSMQ(Microsoft Message Queuing)是微软提供的一种消息队列技术,主要用于应用程序之间的异步通信。在本文中,我们将深入探讨MSMQ的核心特性,包括事务性消息传输、单线程监控、文件发送与接收以及远程信息交互...

    简单的MSMQ程序仅供学习

    MSMQ,全称为Microsoft Message Queuing,是微软提供的一种异步消息传递技术,主要用于在不同应用程序之间或在不可靠的网络环境中可靠地传递消息。它允许应用程序在无法立即响应的情况下发送消息,例如当接收方不...

    MSMQ项目总结.rar

    MSMQ项目总结示例代码 MSMQ项目总结\MSMQ数据库数据传输.rar MSMQ项目总结\MSMQ基类.rar MSMQ项目总结\MQ事务性消息传输.rar MSMQ项目总结\MSMQ单线程监控.rar MSMQ项目总结\MSMQ文件发送接收.rar MSMQ项目总结\MSMQ...

    简单的msmq例子

    MSMQ,全称为Microsoft Message Queuing,是微软提供的一种异步消息传递技术。它允许应用程序在不同时刻发送和接收消息,即使发送方和接收方不在同一时间在线也能正常工作。这种技术对于处理网络不稳定、应用程序...

    MSMQ客户端

    MSMQ(Microsoft Message Queuing)是微软提供的一种消息队列技术,主要用于在分布式系统中实现可靠的消息传递。作为MSMQ客户端,它允许应用程序通过发送和接收消息与其他MSMQ服务器或客户端进行通信,即使目标系统...

    MSMQ开发范例

    **MSMQ(Microsoft Message Queuing)开发范例详解** MSMQ,全称为Microsoft Message Queuing,是微软提供的一种异步消息传递技术。它允许应用程序在不可靠或延迟的网络环境中可靠地交换信息,通过将消息放入队列来...

    MSMQ消息队列演示程序

    **MSMQ消息队列演示程序**是一个在Visual Studio 2005环境下使用C#编写的实例,旨在帮助初学者理解和应用消息队列(Message Queuing,简称MSMQ)技术。该程序包含了完整的源代码,以及一个封装好的类,使得消息的...

    MSMQ_Demo.zip_DEMO_MSMQ DCOM_improvehhz_消息队列模版

    【MSMQ_Demo.zip_DEMO_MSMQ DCOM_improvehhz_消息队列模版】是一个关于消息队列技术的演示项目,旨在帮助初学者快速理解和应用消息队列(MSMQ)以及DCOM(分布式组件对象模型)技术。在这个压缩包中,你将找到一个名...

Global site tag (gtag.js) - Google Analytics