IPC之 - .Net 消息队列(MSMQ) 使用

MSMQ简介
  MSMQ是Windows 2000、Windows xp 、Windows Server 2003的一个组件,并将继续包含在Windows Vista 和以后的Windows服务器中。即使目标接收使用程序没有运行,或运行发送或接收使用程序的计算机没有联网,协同合作的使用程序仍能运用 MSMQ在彼此之间发送和接收消息。在到达目标队列之前,消息由MSMQ存储并转发。接收使用程序能够从队列中恢复数据。
  MSMQ之类消息队列的主要特点在于它分离发送和接收使用程序,使其不必同时运行。这意味着一个使用程序能够把数据存放在队列中,而不用理会队列中的项目能不能被传送到接收使用程序。
  MSMQ是Windows的一个可选组件,只需通过Windows控制面板的添加或删除Windows组件向导就可执行 安装。MSMQ有两种配置模式:域模式或工作组模式(只运用私有队列)。MSMQ安装完成后,立即就可以在.NET使用程序中运行。
  为何运用消息队列
  您可能认为您能够通过一个基本的数据库表(一个使用程序往其中写入数据,另一个使用程序从中读取数据)来使用消息队列。消息队列平台更为稳定,因为它们通常拥有自己的安全机制、事务支持及其它功能。传输消息的路由功能是它的一个关键使用。MSMQ提供各种消息队列平台。
  MSMQ交互
  开发基于消息的使用程序从队列开始。MSMQ包含四种队列类型:
  外发队列:消息发送到目的地之前,用它来临时存储消息。
  公共队列:在主动目录中公布。整个网络各种服务器上的使用程序能够通过主动目录找到并使用公共队列。
  私有队列:这些是本地服务器上的队列,对其它服务器无效(因此这些队列不在主动目录中公布。)
  系统队列:包含日记队列(由系统生成)、死队列和事务型死信队列。死消息不能传送。
  System.Messaging命名空间执行MSMQ的编程操作。这个命名空间有两个主要的对象:
  Message:队列发送或读取的实际消息或数据。
  MessageQueue:接收/发送消息的MSMQ消息队列。
  MSMQ编程 (所有的代码均在Demo里)
  建立一个队列是使用 MSMQ的第一步。您可以通过Windows计算机管理控制台中的消息队列选项完成这一操作,或者自己编程建立一个队列。列表A中的C#代码建立了一个新的私有MSMQ消息队列(如果不存在队列),并同时建立一条消息。
  代码使用 MessageQueue类的Exists要领来确定能不能存在一个名为TechRepublic的私有队列。如存在,它用现有队列示例这个MessageQueue对象;否则,就建立一个新队列。
  新的Message对象用来向队列发送一条消息。它的Label属性指定在MSMQ控制台中显示的消息标题,其主体包含存放在队列上的项目内容。在这种情况下,我只发送文本,但您能够运用任何类型的对象。MessageQueue类的Send要领向队列发送消息。列表B中是对应的VB.NET代码。
  下一步即从队列中读取消息。这是一个基本的流程,使用 MessageQueue类的Receive要领即可。如果队列中存在消息,Receive要领就返回一个消息对象;否则,它等待一条消息出现(您可以配置一个时间期限)。从队列中恢复对象须要预先知道它的类型。

 

MessageQueue类的Formatter属性允许您轻轻松松指定被恢复对象的类型。下面的基本例子仅运用文本,所以它使用 System.String。在列表C中,C#代码从测试队列中读取消息。
  提交给Receive要领的TimeSpan对象指定异常出现时系统的等待时间。接下来配置这个例子中的Formatter要领,对象被转换成字符串读取前面存储的文本。Receive要领从队列中读取消息,它的值显示在控制台中。在try块的最后部分,队列关上。
  轻轻松松使用消息
  MSMQ组合Windows和.NET的System.Messaging命名空间,使您可以方便地在.NET使用程序中运用 消息。消息提供一种在企业使用程序中异步发送并接收消息(数据)的强大工具。
  1、发送基本消息
  在消息发送前,首先要在控制面板中--添加删除程序--添加删除组件--添加消息队列的组件,然后建立一个私有的消息队列名称,最后,运用中实例化MessageQueue的一个实例并指定其所对应的队列。如下代码
  代码
  //实例化MessageQueue,并指向现有的一个名称为VideoQueue队列
  MessageQueue MQ = new MessageQueue(@"./private$/VideoQueue");
  MQ.Send("消息测试","测试消息");
  2. 发送复杂消息:Demo    (留心:运行时,请先建立一个名为 "./private$/Article" 的私有队列)
  这个是一个异步读取消息队列的Demo,里面有什么不懂的要领和属性,可以留言,Email,Google,都行!

 

----------------------【以上引用字 友情下载   ,一下是我安装 Windows消息队列组件时遇到的问题及解决方案】

 

现象:
安装WinCC 6.0 SP2,需要先安装“消息队列”服务,但在控制面板/添加Windows组件时出错,提示信息如下: 
      无法启动MSMQ服务。  
      错误代码:0x420c  
      错误描述:依存服务或组无法启动 

原因:“Distributed Transaction Coordinator”服务未启动。
解决:

1、右击“我的电脑→管理→服务和应用程序→服务”中将此服务启动。(失败告终)

Distributed Transaction Coordinator服务依存于 Remote Procedure Call(RPC)和 Security Accounts Manager这两个服务。
在“控制面板”里点“管理工具”,点“服务”,确认这两个服务属性已经设为自动,并且已经启动。
2、也可使用如下方法:(OK)
开始→运行中输入:cmd后依次输入如下语句:

net stop msdtc
msdtc -uninstall
msdtc -install
net start msdtc

(或一句 msdtc -resetlog 没试)

 

安装wincc要求打319740的补丁:

实际更改的内容:

/??/C:/WINDOWS/system32/SET9.tmp
!/??/C:/WINDOWS/system32/uxtheme.dll

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值