风之语
posts(201)
comments(182)
trackbacks(1)
BlogJava
联系
聚合
管理
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
给我留言
查看公开留言
查看私人留言
随笔分类
ajax(1)
android(1)
apache(1)
AppFuse(1)
BIRT(1)
iText(1)
JSF(8)
kettle(1)
linux(5)
mac(1)
maven(1)
MSTR(3)
Open XML(1)
Oracle(21)
RCP
Struts(2)
Struts2(2)
SybaseIQ(6)
tapestry
tomcat(2)
weblogic(1)
webservice(1)
weka(1)
云计算(1)
收藏(31)
数据仓库(11)
架构设计(3)
生活(2)
集群(1)
项目管理(6)
随笔档案
2012年12月 (4)
2012年11月 (1)
2012年7月 (2)
2011年8月 (1)
2011年7月 (1)
2011年3月 (1)
2010年12月 (2)
2010年11月 (4)
2010年10月 (3)
2010年9月 (5)
2010年8月 (1)
2010年7月 (4)
2010年3月 (1)
2010年2月 (3)
2009年12月 (3)
2009年11月 (4)
2009年9月 (3)
2009年6月 (5)
2009年5月 (3)
2009年4月 (2)
2009年3月 (5)
2009年2月 (4)
2009年1月 (2)
2008年11月 (2)
2008年9月 (1)
2008年7月 (2)
2008年6月 (4)
2008年5月 (6)
2008年4月 (1)
2008年3月 (1)
2007年12月 (2)
2007年11月 (5)
2007年10月 (2)
2007年9月 (3)
2007年8月 (3)
2007年4月 (1)
2007年3月 (2)
2007年2月 (2)
2007年1月 (2)
2006年12月 (3)
2006年8月 (2)
2006年7月 (2)
2006年6月 (2)
2006年4月 (2)
2006年3月 (1)
2006年2月 (3)
2006年1月 (6)
2005年12月 (6)
2005年11月 (4)
2005年10月 (17)
2005年9月 (25)
2005年8月 (16)
2005年7月 (8)
相册
技术图片
收藏夹
java
link
My wife
My wife's blog
最新随笔
1. apache修改最大连接并用ab网站压力测试
2. Vm虚拟机访问本地硬盘文件
3. NFS文件无法写入的权限问题
4. weblogic设置上传文件访问权限
5. 在android上动态实现ichartjs的3D柱形图
6. 使用Oracle trunc 来指定精确的年月日时分秒
7. Quartz 2.1.5 web应用配置
8. LoginAny 使用笔记
9. MyEclipse 无响应的几种解决办法
10. java.sql.SQLException: No more data to read from socket
搜索
积分与排名
积分 - 399187
排名 - 139
最新评论
1. re: 使用Oracle trunc 来指定精确的年月日时分秒[未登录]
政治
--张三
2. re: 干掉流氓软件vrvrf_c.exe,vrvedp_m.exe[未登录]
`
--1
3. re: 无需刻录DMG光盘,教你在VMWare下安装MAC OS X Snow Leopard 10.6
我走到了换DMG映像的时候,然后就没有反应了,这个是什么情况,是不是我的映像文件有问题,还是。。。。
--玉竹常青
4. re: LoginAny 使用笔记
怎么没一个人留言,现在来是不是在挖坟啊
--ellipse
5. MSTR web应用的部署[未登录]
请问,如何用oracle Application Server服务器部署mstr web应用?
--rocky
阅读排行榜
评论排行榜
View Post
【王程斯】IBM Message Broker笔记系列(二)
【王程斯】IBM Message Broker笔记系列(二)
IBM
Message Broker笔记系列(二)
赶在这周结束前,再写一篇
MB概述
MB的全称是message
broker
,即“消息代理”。“消息”一词前几年比较火,消息
中间件
也卖的很火,当时似乎J2EE的产品都要跟“消息”、“中间件”扯上点关系,以彰显潮流。我觉得初学者只需记住“消息”的异步性即可,也就是“消息”和传统的
网络
连接、远程方法调用等的最大区别,就是你一旦发出消息以后,不用再管它的死活,中间件会处理一切事务,出了问题也会通知你,这样可以更好的分离
业务
逻辑。把消息当成邮件的话,那么传统网络连接就是由你去送信,而中间件则好比邮局,它来提供送信
服务
,并且可以跨国境、跨语言,完全不用你操心(相当于中间件可以连接异构平台),使用者只需等在家门口收信。
在说“代理”之前,先讲一下MQ的基本概念。MQ即message queue,消息队列,也就是IBM的主打消息中间件产品,IBM几乎所有
SOA
相关的产品,都是构建于MQ之上的,没有MQ强大的消息传输能力,那么IBM很多产品都做不起来。在这里不赘述MQ的
功能
,初学者只需把MQ当成一个非常可靠的传输通道即可,你只要往里面放东西,MQ就会把消息传到目的地。
那有了强大的MQ还要“代理”干什么呢?如果你用过MQ,或者类似的产品如apache的
开源
JMS
产品“ActiveMQ”,就会发现,尽管用MQ不必考虑网络连接、平台异构,但是你在配置的时候、以及使用MQ编程的时候,都要指定目的地,比如设置IP地址。这样的
程序
依旧存在很大耦合性,万一某个
组件
的IP变了,所有跟他相关的组件都得改动,轻则修改配置
文件
、重则重写代码。这时“代理”的作用就开始凸显了。
所有组件的MQ队列都可以直接连接到MB上,MB相当于一个公共服务中心。MB接收所有消息,然后自动分析其中的内容,找到相应的目的地,进行路由转发,好比你在写信时,只需写明收信人的姓名、身份证,哪怕收信人搬到天涯海角,只要他在MB邮局中登记了,那MB就可以把信交给他,这样进一步地分离了业务和底层通信,我只需要知道业务概念上的“他”,就可以把消息交给他。此外,MB还可以进行消息转换,这就像是自动翻译信件,我现在可以用中文写封信给本拉登,我不需要知道他具体藏在哪里,信件就会自动翻译成阿富汗的文字,送到本拉登手里。
所以,代理的两个核心功能就是:“消息路由”和“消息格式转换”。MB本质上也是一个服务总线,所有的服务组件接入到MB中,服务将消息塞给MB,MB来决定怎么转发,这样让服务愈加成为一个独立的实体,和其他服务的耦合性进一步降低,从而达到SOA的境界。
MB初览
说了那么多大道理,终于开始讲到MB的具体内容了。下面的图片摘自IBM的红皮书,是MB的总体
架构
,我粗略的描述一下。
A.JPG
(68.57 KB)
2008-9-3 17:21
可以看到,MB里面有两大块内容,一个是toolkit,也就是
开发
环境
,后面我们会讲到;还有一个是broker domain,即代理域。代理域里面有两个核心部件,一个是配置
管理
器configuration manager,一个是代理broker。
配置管理器其实很像MQ的队列管理器,或者是
WAS
的deployment manager,都是起到一个管理作用,在MB里当然是管理众多的broker了。我们平时对broker的管理、维护操作,其实都是通过配置管理器完成的。
代理broker是真正体现MB设计思想的地方,上面的图片中有像
流程
图一样的东西,即message flow,是消息的流程图(从什么地方流进来,再从什么地方流出去);还有message set,即消息集,说白了是描述消息长什么样子,它的结构、内容是怎样的。其实,message flow对应了上文所说的“消息路由”,而message set则对应“消息格式转换”,你肯定要清楚两种消息的格式,才能定义互相转换的规则。
b.JPG
(9.1 KB)
2008-9-3 17:21
MB的外围是各种类型的
应用程序
,他们接入MB的方式可以多种多样,可以是Webservice,也可以是
数据库
、文件、HTTP连接,等等,不一定局限于MQ
圆柱体代表的则是
数据
库了,这是尽IT人皆知的。因为MB的很多信息,包括配置信息、以及broker的运行时信息都要通过数据库保存。broker本身也可以操作数据库,你可以在流程的某个
节点
上增删查改某个数据库
下图是WMBT(
web
sphere mb toolkit)的界面
c.JPG
(93.08 KB)
2008-9-3 17:21
可以看到,WMBT是基于eclipse的,所以大部分java开发者应该能很快上手。开发MB程序和开发J2EE程序差不多,也是先新建一个项目,然后编辑,最后
部署
。
1号区域是一个消息流,可以看到非常直观:从MQ读入——计算(转换成web service格式)——发送http请求到web service的url——计算(转换回MQ消息格式)——放入MQ
2号区域是节点选择面板,MB自带了几十种节点给我们选择,同时我们也可以自己创建节点
3号区域是属性面板,当你选择某个节点时,可以在其中编辑节点的属性
4号区域是域连接面板,开发好的消息流和消息格式,必须首先在MBT中连接到对应的配置管理器,再将打包好的流程部署到对应的broker中,这个过程也可以由命令行完成
5号区域则类似eclipse的项目集合,里面是所有的MB项目
总结
还是打个比方。首先,我们把MB看做一个功能超级强大的路由器,它支持多种接入方式,也就是MB路由器上的端口有很多种,MQ是比较常用的一种方式,所以MQ就像常用的RJ45接口的5类双绞线。但同时MB还支持JMS、
SCA
DA等各类接入标准。在MB内部,我们管理员定义好路由规则(编写消息流)。其次,从MQ过来的信号,可以转换成其他网络协议的信号(消息格式转换),这类似于网桥功能,可以跨越不同网络。同时,MB的
性能
非常好,可以进行大数据量交换,这一点又很像是交换机。最后,MB可以理解业务逻辑,它的路由不仅像路由器那样针对消息头进行路由,还可以根据消息的业务内容进行路由,酷似
应用
网关。
posted on 2009-11-04 14:10
风
阅读(349)
评论(0)
编辑
收藏
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问