MSMQ 与ESB

来源:互联网 发布:淘宝天天特价店铺活动 编辑:程序博客网 时间:2024/05/16 01:09

企业应用中,对于面向服务的基础设施体现为ESB, 面向服务的消息机制有一种是One-way, 一种是Request/response, 一种是Pub/sub
这三种模式其实可以同分为两类,同步和异步. 对于异步而言, 可能存在一个很复杂的环境中. 客户端跟服务端需要一个可靠的消息传递机制.他们要解决网络时断时续,机器不能100%可靠等问题.这种传递机制微软的平台是MSMQ, 最近SQL 2005 也提供了个数据库段到数据库段的可靠消息传递机制.SQL Service Broker

sqlbroker    msmq

MSMQ允许双方在离线的状态下进行通信,且它提供了一整套易于使用的API,并已经集成到了.NET框架中,这一点要比Service Broker好得多。

MSMQ从NT开发就有了,最新版本是4.0,MSMQ 在各个操作系统的对应版本:

MSMQ版本操作系统1.0Windows NT4, Windows 95/98/Me2.0Windows 20003.0Windows XP, Windows 20034.0Windows Vista, Windows Server 2008

我们目前的应用一般都是msmq 3.0 ,他有一些特性,比如有触发器, http 转发等特性.对于事务的支持, msmq 支持一下两种类型的事务.
1. 发送消息, 目前可以在不同的机器之间开启一个事务. 可靠的发送消息.
2. 接受消息,目前只支持同一个机器上,不同程序之间的事务中接受消息,这个也是msmq 3.0 的一大不足. 因为这也限制,往往会要求处理程序跟队列在一个机器上.

MSMQ4.0在事务支持方面的得到了改进,它允许在不同的机器之间使用事务来接受消息. 多了一个subqueue,子队列,对多个in order消息的处理改进等

MSMQ 4.0新特性参看http://msdn2.microsoft.com/zh-cn/library/ms701784(en-us).aspx

MSDN Code 上有一个SOA'izing MSMQ with WCF (and Why It's Worth It),是学习WCF和MSMQ的一个我所看到的最好的教程。

ESB使用的消息通信采用MSMQ对于保证消息的可靠性,离线性方面的支持最好的,支持离线通信是任何SOA基础框架都必须考虑的关键部分。

A comprehensive guide to using MsmqIntegrationBinding with MSMQ 3.0 in WCFhttp://blogs.conchango.com/simonevans/archive/2007/09/17/A-comprehensive-guide-to-using-MsmqIntegrationBinding-with-MSMQ-3.0-in-WCF.aspx

Yoel's Microsoft Message Queue (MSMQ) spacehttp://msmq.spaces.live.com/

原创粉丝点击