5.1 闲话中间件与MQ

谈起MQ,闲话几句中间件历史,大约2000年左右时,当时比较主流的分布式技术是Corba和微软阵营的Com/Com+,当时在一个小企业实习接受过Corba技术培训,那会儿拿本厚厚的Corba技术书,虽然也不怎么懂“公共对象请求代理体系结构”这个抽象高深的名字,但看见别人听着后更加一脸茫然时,顿时感到一种自豪感,掌握了Corba先进技术就有一个更好的未来。当时费了很大劲学会了安装和开发Helloworld,学会了配置一个最简单的IDL,其实并不知道这个东西能用在什么地方,为什么要用,只是隐约听见公司投标的邮政系统好像会用。

后来Corba技术最终没有发展起来,它想提出一个公共的标准,但是同时期J2EE规范已经形成,整个Java阵营都在支持EJB1.0和JMS,微软的DCOM也发展成完整的.NET技术体系,Corba夹在这两大技术阵营中间,声音越来越小,投入越来越弱…所有大的商业软件公司中间件产品对Corba的支持都不怎么给力,最终随着WebService和标准化的WSDI逐渐普及,Corba的声音完全被淹没了,作者通过WebService也终于明白了为什么要用Corba。

MQ活了过来,并且一直发展得很好,MQ最初在银行前置终端机就有应用,这种屏蔽底层通信细节、异步松耦合并在异构应用之间的消息驱动方式逐渐受到欢迎,广泛应用到中国几乎每家银行业务系统中,并且Java阵营制定了JMS标准来规范化MQ产品。

“我发一个消息你来收,或者你订阅我的消息,我来通知你”的设计出现到越来越多的解决方案中,MQ和Webservice成了后来构建SOA的重要基础技术,IBM基于MQ推出了IBM MB的ESB产品,产品License售价超过百万,而且还是按CPU卖。

成王败寇,用在IT技术行业又何尝不恰当,一代代的创新技术就像起义者,推翻了旧技术后,又彼此竞争淘汰,Corba倒下了,最终MQ和Webservice踏着失败者的尸体占据了市场,因此学习分布式技术,我们不能不去了解MQ的机制和原理。

Fourinone可以当成简单的MQ来使用,但更多的是旨在揭露实现原理,告诉你如何设计MQ,下面讲述了MQ“队列和主题订阅两种核心模式”的实现并演示了相关Demo。