收藏 分销(赏)

IBM MessageBroker笔记系列(一).doc

上传人:s4****5z 文档编号:8973443 上传时间:2025-03-09 格式:DOC 页数:37 大小:454.50KB
下载 相关 举报
IBM MessageBroker笔记系列(一).doc_第1页
第1页 / 共37页
IBM MessageBroker笔记系列(一).doc_第2页
第2页 / 共37页
点击查看更多>>
资源描述
IBM MessageBroker笔记系列(一) 前言        SOA已经在中国喊了几年,连象牙塔的大学生都知道了,但实施的案例并不多,而作为SOA基础设施的企业服务总线ESB,在国内的应用更是稀少,主要都是银行和电信等大牌企业在使用。我算非常好彩,打工所在的公司恰好要为客户开发一个基于MB和WAS的平台,让我有很多机会接触到MB的应用。现在国内MB的资料非常少,主要是IBM的红皮书,可惜全部都是英文的,看起来颇费力,效率也不高;出版物我所知的只有一本,是陈宇翔先生所著的《精通Websphere Message Broker》【中国水利水电出版社】,也是目前手边唯一的一本参考书。因此希望将这段时间的一些使用心得记下来,作为一个从未接触过SOA和MB(甚至没用过websphere产品)的菜鸟,面对这个上百万人民币的庞然大物,应该怎样下手   书评        先来说说这段时间翻阅的一些MB的书籍,包括纸质和电子版,首先是上文说到的《精通Websphere Message Broker》这本书。本来这种书给人的第一反应就是:一本红皮书的翻译,无非就是从IBM的各个红皮书里面摘抄文字,翻译好之后综合一下的“大杂烩”。老实说这本书里面的确有很多翻译的内容,比如MB toolkit中自带的一些教程,以及MB Information center里面的部分实例,书的后半部分都是附录,包括函数库、命令库,等等。但是不可否认的是,IBM的红皮书、InfoCenter本身就是相当好的教程库,而这本书用到其中的内容也翻译的流畅,所以也是方便了国内读者。而且,作者本身也的确有一些MB的使用经验,书中也有他自己的内容。所以,这本书作为入门的话,实在是比较辛苦,因为没有考虑太多初学者的难处,内容的编排也不太合理,但是作为一本参考书却是不错的选择。在如今没什么资料的情况下,最好咬牙坚持看下去。        再说说IBM提供的电子资源,包括红皮书和网上资料,以及InfoCenter。只要你买了MB的产品,IBM自然会提供一堆红皮书给你,当然你也可以慢慢从网上下载,这些红皮书很多写的不错,但是要从头看太痛苦,作参考比较好。此外如果你购买MB的培训,那么培训机构也会给你一些pdf材料(其实都是IBM出品的),这些材料相对易懂,适合入门。再有就是developerWorks,IBM的官方技术网站,里面提供最新最全的资料,有空多去看看,也可以订阅它的邮件。最后是InfoCenter,其实说白了是网页版的手册,可以在线看也可以下载,相对其他来说,难度介于中等,而且不像网站的资源那么零散,所以也是很好的提高阶段的学习资料。   ESB产品        如果你还不清楚ESB的概念,和IBM的相关产品,可以去IBM网上查查资料,作为一个菜鸟我没法全面评论当前的ESB产品,只能记录一下自己的所见所闻(就是跟IBM和BEA公司打交道的时候听到的一些内容)。撇开两者的应用服务器不谈(这方面的口水战已经够多了,国内用BEA的相对多,容易上手适合快速开发,性价比很高),SOA和ESB方面,IBM无疑是走在前面的,这个可以从两者的产品线看出来。BEA的ESB产品只有一款AquaLogicBus,IBM却已经开始划分各类市场、推出不同档次的产品了(但这个也是BEA宣传的好处之一,买一个就能到处用,见仁见智了);其二,BEA自己的销售都对AquaLogic不甚了解,而且在国内尚无成熟应用,这点是很多企业最关注的,没有成熟应用意味着没有好的技术支持,出了问题不知道找谁解决,甚至从没有人遇过这种问题;而IBM这两年在SOA的推广方面做得比较好,广告也做得多,在国内已经有一些成功案例,技术支持也更加完善,我们在广州就能直接联系到工程师,而不必等北京、上海,甚至国外的支持。        MB在对异构环境的支持方面,做得也比AquaLogicBus好,可以支持几十种通信协议和平台,而且天生和IBM自家的大型机等结合的比较好,AquaLogicBus支持的就相对比较少,主要是基于java平台的SOA流行协议,比如web service,给人感觉更像是websphere ESB的竞争对手。但是BEA的产品向来给人的感觉是除了在IBM的平台,其他平台上都比IBM的同类产品性价比要高,不知道AquaLogicBus是不是也一样表现优秀,这个就需要专业的测试了。        另外很重要的一点,就是BEA的消息中间件做得不如IBM的MQ强大,而MB又是依托于MQ才能有如此强大的功能,这个是BEA的销售也不得不承认的。尽管Web service是当前SOA的主流,但是性能方面却是不敢恭维,在企业内部实施SOA,如果服务组件都用web service连接,虽然更加通用、更加廉价易用,但是往往会有性能瓶颈,关键地方还得靠消息中间件。        最后呢,就是BEA工作人员对于自家的产品,底气明显不足,一方面是不熟悉,另一方面也是国内用的少,也侧面反映了对于这类重量级产品、而且关乎整个系统性能的底层部件,人们还是倾向于选择IBM,将来SOA应用普及了,AquaLogicBus肯定也会遍地开花,就像现在的weblogic一样。只是目前来看,还是选择MB更让人放心。        还有一个不得不提到的有力竞争者是来自开源社区的JBOSS ESB,这个产品我没了解过,但是现在Reahat收购了JBOSS,在JBOSS AS和ESB上也下了相当大力气,誓要在SOA市场与IBM和BEA分一杯羹。很看好JBOSS的潜力,只是开源产品在中国连个服务中心都没有,暂时只能供高手们自己研究着玩了。   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的总体架构,我粗略的描述一下。 可以看到,MB里面有两大块内容,一个是toolkit,也就是开发环境,后面我们会讲到;还有一个是broker domain,即代理域。代理域里面有两个核心部件,一个是配置管理器configuration manager,一个是代理broker。 配置管理器其实很像MQ的队列管理器,或者是WAS的deployment manager,都是起到一个管理作用,在MB里当然是管理众多的broker了。我们平时对broker的管理、维护操作,其实都是通过配置管理器完成的。 代理broker是真正体现MB设计思想的地方,上面的图片中有像流程图一样的东西,即message flow,是消息的流程图(从什么地方流进来,再从什么地方流出去);还有message set,即消息集,说白了是描述消息长什么样子,它的结构、内容是怎样的。其实,message flow对应了上文所说的“消息路由”,而message set则对应“消息格式转换”,你肯定要清楚两种消息的格式,才能定义互相转换的规则。 MB的外围是各种类型的应用程序,他们接入MB的方式可以多种多样,可以是Webservice,也可以是数据库、文件、HTTP连接,等等,不一定局限于MQ 圆柱体代表的则是数据库了,这是尽IT人皆知的。因为MB的很多信息,包括配置信息、以及broker的运行时信息都要通过数据库保存。broker本身也可以操作数据库,你可以在流程的某个节点上增删查改某个数据库   下图是WMBT(websphere mb toolkit)的界面 可以看到,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、SCADA等各类接入标准。在MB内部,我们管理员定义好路由规则(编写消息流)。其次,从MQ过来的信号,可以转换成其他网络协议的信号(消息格式转换),这类似于网桥功能,可以跨越不同网络。同时,MB的性能非常好,可以进行大数据量交换,这一点又很像是交换机。最后,MB可以理解业务逻辑,它的路由不仅像路由器那样针对消息头进行路由,还可以根据消息的业务内容进行路由,酷似应用网关。     IBM Message Broker笔记系列(三) 安装配置 准备工作   MB的运行依赖于MQ,所以首先要安装MQ,MQ的具体安装过程略,并且以后假设你已经有关于MQ的基础知识,比如队列管理器、队列、通道,等等。   安装好MQ后,创建一个队列管理器(简称QM),名为TESTQM(MQ里面的对象是区分大小写的,为了避免不必要的麻烦,这里统一用大写,以下划线分隔),这个队列管理器是MB运行的基础,当你用MB的脚本创建配置管理器、代理和执行组时,都要指定QM的名字   然后创建运行时数据库,名为TESTDB,MB自带了derby,你也可以选择DB2,注意此处的数据库是指MB自身运行所需的数据库,目前6.1版本只能用derby或者DB2。创建的方法,可以用MB的脚本命令:mqsicreatedb,也可以用对应数据库自身的脚本命令或图形界面来创建。   关于MB的数据库: 配置管理器只能用derby,而代理可以用多种数据库,只是不同数据库的创建命令各自不同(包括在不同平台上也有差异,具体参考红皮书);代理的数据库可以共用,配置管理器也可以和某个代理共用一个derby数据库;使用mqsicreatedb创建数据库时,如果你已经安装了DB2,则默认创建一个DB2数据库,否则derby   以上是为MB的运行创造运行时环境,接下来开始创建MB的实例   首先当然是要安装MB了,过程挺简单的,略去不表。安装完成后,会在“开始菜单”中有个“命令控制台”,如下图: 单击它,进入MB的一个命令控制台环境,其实和普通的windows命令控制台没什么区别,主要在于它帮你设好了相关的环境变量,你就可以在里面直接输入MB的命令脚本了   前文提到过,MB的配置管理器是用来统一管理MB的各个运行时组件的,因此首先要创建一个配置管理器 mqsicreateconfigmgr –i user –a password –q TESTQM 指定用户名、密码和队列管理器,用户名密码是你登陆本地机器时输入的,必须要有足够的权限(具体权限就不清楚了,我直接用管理员帐号,深入讨论请参考MB的红皮书) 你会发现这里没有指定数据库的名称,因为配置管理器在创建时会自动新建一个derby数据库,而且只能用derby数据库,用户无法改动 配置管理器的名称也没有指定,在windows下是会创建默认名称的:ConfigMgr   然后是创建代理,名为TESTBROKER mqsicreatebroker TESTBROKER –i user –a password –q TESTQM –n TESTDB 大部分都和创建配置管理器一样,只是多了一个选项,用于指定数据库,再次提醒,必须是derby或DB2,二选一。   最后,使用“mqsistart组件名” 来启动配置管理器和代理 配置MB toolkit WMBT本身的安装没什么特殊要求,这里就不啰嗦了   接下来的关键是在WMBT里面连接到刚才创建的配置管理器,其作用就好像你在Eclipse中要配置好应用服务器的实例,才能把你的J2EE项目直接以图形界面的方式部署,而不必自己敲命令   如图,文件->新建->域连接   在弹出的窗口中,填入相关参数 这里只需填入队列管理器的名称、域名、端口,注意是队列管理器而不是配置管理器(其实你在创建配置管理器时也没有指定端口,因为它用的就是所在的队列管理器的端口) 此外对于SVRCONN通道名,SYSTEM.BKR.CONFIG是在你创建配置管理器时自动生成的,可以在“MQ 资源管理器”中,通过“显示系统对象”来查看,你也可以自己建一个服务器连接通道,然后在这里输入该通道的名字   一切正常的话,就能看到左下角的“域”窗口中,多了一个新的域连接,里面以树形结构显示了你刚才创建的代理(前提是你的代理基于derby数据库,如果基于DB2,则需要在域连接那里显式增加“代理引用”),现在你可以右键单击TESTBROKER,然后创建执行组。等你开发好MB项目后,打个包,拖到执行组里面,就可以部署了。   IBM MessageBroker笔记系列(四)   前面讲了那么多MB的原理和配置,这一篇blog开始正式讲讲我个人学MB的感受。“假如时间可以重来”,我会怎样利用手头的资源,以最快的速度入手。 体验MB 在安装完WMBT之后,会出现“欢迎”(这个也是eclipse环境安装后都会有的东西,你也可以在“帮助”->“欢迎”里面找到),里面有不少很浅显的例子,让你对MB是如何工作的有个感性认识。强烈建议把里面的“入门”部分看完。 学习开发 看完“入门”后,重点就应该放在“样例”中。在样例库里面,有数十个基础的样例,每个样例都针对某类节点,比如消息映射、JMS、数据库操作、Webservice调用,等等。那么多的例子,当然不可能一下子看完,而且对于一张白纸的新手,里面有些基础知识还不懂,我的建议是:结合之前提到的那本书《精通Websphere Message Broker》,看完一方面的内容,比如数据库操作,你就可以打开“样例库”,将里面的数据库样例导入至WMBT,然后看看其中的ESQL代码、相关节点的设置,等等。一开始会比较枯燥,而且让这些样例跑起来也不是件容易的事情,但坚持下去就会慢慢体会到其中的乐趣了。 掌握Debug利器 一般来说,WMBT会自动帮你配置好样例程序运行所需的环境(比如创建队列管理器、数据库,等等),然后将样例部署到MB的执行组中。这一切都是自动完成的,但有时候出于各种原因,试运行样例的时候不能得到预期的结果。首先排除掉打包和部署时的错误,因为样例程序的源代码通常是没有问题的,那么余下的问题就只能靠debug来解决了。另一方面,当你看了书之后,对InputRoot、Environment、ExceptionList这些东西的结构、细节肯定会很好奇,但是书中提到的很少很零散,最好的方法就是在debug模式下,让消息流挂起在某一点,然后你再慢慢浏览其中的各类变量,很多东西都不言自明了。用IBM工程师的话说,就是“没有debug就根本没法学会MB”。为什么?相关资料太少了,去google有时候还不如直接问MB自己,所以也是很考验你的自学能力的。 配置debug环境 这些内容在《精通》那本书中都有讲到,只是比较粗略,我在这里补充我个人的经验。 首先右键单击某个执行组,“属性”,在“JVM调试端口”中输入一个tcp端口号,不要和其他程序冲突就行,假设9090。再次右键执行组,“调试”->“启用调试9090”。然后,切记,重启执行组所在的broker 重启后,把bar文件部署到该执行组,然后进入“debug”视图,找到下图右下角的那个按钮: 如果是该按钮是红色的,说明debug守护程序没有启动;如果是绿色的,鼠标移过去,会显示“debug守护程序正在监听XX端口”,需要注意的是,这里的端口可不是之前在执行组设置的端口,刚好相反,必须和之前的9090不同。单击旁边的下拉箭头,可以启动或者更改守护程序的端口,这里改为9099,不必重启。   接下来,就和一般的eclipse调试一样了,在绿色的小昆虫按钮设置debug参数。新建一个debug,注意这里的“java调试端口”则必须与执行组的一致,你也可以“选择执行组….”,系统会根据你选择的执行组,自动设置端口   然后,在“源”选项卡中,添加你要调试的项目。确定之后,就可以运行debug了。 What next? debug配置成功后,就开始慢慢研究那些样例吧,按照之前我说的思路,“书本+样例”,按照每个人自己的学习习惯和项目开发的需要,将你要学习的样例,一步步调试过去,看看每条ESQL语句的结果,很快的你就知道其中的运行机理了。 小结 由于MB不能像java那样,输出东西到控制台,只能输出到日志文件,而且还得写一堆语句,或者配置trace节点,很麻烦,所以传统的在程序中插入输出语句的方式在这里没太大意义。很多情况下,要依靠debug来观察消息流执行过程中消息的变化,来决定bug的所在。   IBM MessageBroker笔记系列(五) 学习资源 专门整理一下最近用到的一些学习资源,并稍作评论 一、           《精通Websphere Message Broker》 其实对这本书,我是爱恨交加。一方面,它是仅有的一本中文的纸质图书,也是我翻得最多的一本参考书;另一方面,它也就是参考书,作为入门的图书太难了,编排也不怎么样。但是总的来说,开发MB还是少不了它呀,当你要查某个节点的用法、某个ESQL函数的参数,大部分人还是倾向于翻书而不是翻一堆英文资料吧   二、           Websphere Message Broker InfoCenter 这个东西的使用频率是仅次于上面那本书的,比起书来说,有哪些好处呢?首先是内容量大而且全,几乎你要找的所有信息都能在里面找到。此外,电子资源的一大好处是可以搜索、可以用金山词霸,对于一些书上没有的或者你根本不知道躲在哪个角落的信息,用这个最方便了。 但是不足之处也显而易见,首先是全英文,看起来比较费力;另外是对着屏幕上一页页的英文看半天,个人感觉对眼睛很不好,很费精力。   三、           IBM技术支持 IBM的服务分为收费与免费两种,当你购买了相关产品后,就能获得相关的技术支持,一般是指派一两个售后工程师,你可以随时联系他们,包括手机和电邮。当你在开发中遇到问题时,大可不必客气地狂问他们问题。能不能给你个满意的答复就看情况了,因为有些问题不面对面交流是无法描述清楚的,而要他们过来你这边通常需要预约(IBM的工程师都很忙,貌似事情特别多,三天两头开会、培训学习什么的)。 而且,作为专业服务队伍的一大特点,就是只负责他熟悉的产品,假如你的问题是“MB和spring里面某个东西通过MQ互联失败”,那他们首先会尝试解决MB这边的问题,如果不行,那就不好意思了,“spring不是IBM的,同时也不是我熟悉的,你去找spring的厂商吧,或者还可以给你一个MQ工程师的联系方式”。其实很多这些问题都是要联调的各方一起解决的,只是,如果你真要这么做,先掏服务费吧,因为这种问题涉及到具体项目开发,IBM可不是慈善机构。 还有一种情况,就是IBM的工程师也不曾遇过的问题,比如某些产品的新特性连他们都没有被培训过,那就比较痛苦了,所以要找其他方法,总不能干等到他们学习完了再来指导你吧。   四、           MQSeries论坛           这个论坛特别好!囊括了IBM MQSeries的所有产品,里面有专门的WMB区,很多高手在里面回答问题,我甚至觉得,真想深入研究MB,平时可以多去那里逛逛。上次关于webservice的一个问题,IBM的技术支持都不清楚(因为是6.1版本的新特性),最后还是这里的高手解答的。 这是国外的一个论坛,发帖看帖之余,还能练习英文,何乐而不为呢   五、           IBM 网上资源 这个的范围比较广了,从红皮书到developerWorks社区,里面有很多你想要的东西,只是dw社区的文章中英文混杂,找起来比较费力,个人还是把这里当成学习的地方而不是紧急时候的参考资料。闲暇之余在这里浏览那些IBM专家发的文章,不仅图文并茂、版面工整,文章质量高,水平也由浅及深,各种层面的都有,实在做得很不错,建议我们这些菜鸟或者技术狂去订阅dw的邮件吧,经常会发送“新手入门”之类的电子杂志。   小结 暂时用到想到的就这些了,MB的确不好学,不然IBM也不会把培训和服务费收这么贵了,可见IBM真是很狡猾,把软件做得难用又不肯出一些系统的基础教材,摆明是要宰你一笔,呵呵。如果你也对MB有研究,欢迎一起探讨,交流更多好用的资源(可以省钱)。   IBM MessageBroker笔记系列(六)   前面几篇笔记,都是讨论MB是什么、怎么配置、怎么debug,以及一些学习资源和心得,接下来的几篇会针对MB开发中一些常见的问题,分门别类进行归纳总结,包括数据库、WebService、ESQL语法细节,等等。这些细节问题都是我本人在这两个月的开发过程中遇到的,相信对很多新人都有借鉴作用。 数据库操作 配置MB的用户数据库   前面已经讲了在创建MB运行时实例时,配置数据库的基本过程了,但那里所指的数据库是MB自己运行时需要的数据库,用来存放诸如broker、执行组、消息流等的信息,而现在开发的企业应用程序,几乎没有不用到数据库来存放业务数据的,所以这里主要讲述如何配置“用户数据库”,也即你的应用程序使用的数据库。 下面以MB 6.1 + Oracle 10g为例,介绍配置过程 一、           ODBC数据源 MB是通过ODBC来操作数据库的,因此首先要配置好操作系统本身的ODBC数据源。Windows中配置ODBC很容易,在此不赘述细节。需要注意的是,选择Oracle数据源驱动时,一定要选择下图所示的MB自带的Oracle驱动   我在创建ODBC时,一开始没有在本机安装Oracle,结果ODBC无法使用,报告“由于系统错误126,驱动程序无法加载”,问了IBM的技术支持也没有答案,后来干脆在本机安装了一个Oracle(不必运行),问题就解决了,估计MB自带的Oracle驱动还是要调用Oracle本身的一些库的。我对Oracle本身基本不懂,具体用到了哪些库也不清楚,就先这么用着了。 二、           数据库设置 这里顺手提一下Oracle本身的设置。当你新建了Oracle的ODBC数据源后,会发现数据源设置里面,没有IP和端口设置。我在网上搜了一下,最简单的方法是直接修改Oracle的tnsnames.ora文件,这个文件位于: $oracle_root/product/10.1.0/db_1/NETWORK/ADMIN/tnsnames.ora 路径下,可以用记事本打开编辑。里面本身已经有样例了,参照着改很容易 三、           消息流节点 MB中能和数据库打交道的节点有很多,包括filter、compute,和专门的数据库节点,如下图: 基本上,凡是属性里面可以设置“数据源”的节点,都可以操作数据库。使用方法很简单,直接在“数据源”属性中填入操作系统的相应ODBC数据源名称即可。 四、           代理broker的设置 这是最后一处要设置的地方。前面的tns文件解决了ip和端口的问题,但是数据源本身的用户名和密码在消息流中并没有提及,其实这是通过MB的一个命令来设置的,格式如下: mqsisetdbparms brokerName -n dataSourceName [-u dataSourceUserId] -p dataSourcePassword 具体用法可以输入 mqsisetdbparms /h 获得参考 配置完以上内容后,运行消息流应该不会有数据库连接的异常了。假如配置不正确,会在运行到使用了“数据源”的节点处抛出ODBC的一些异常   在WMBT中创建数据库项目   以上做的工作可以确保消息流能够正确操作用户数据库,但是当你在WMBT中编写SQL语句时,会出现很多警告,内容一般是“无法解析数据库表引用:某字段”。虽然不影响运行,但看着总是不太爽。 出现警告的原因很简单,你没有告诉WMBT你需要用到的数据库表的结构是什么,所以WMBT很尽职地告诉你可能有问题,我们只需引入数据库的定义,即可消除这些警告。 首先,打开“数据库资源管理器”视图,新建一个JDBC连接,和其他EclipseIDE类似,配置好相关参数即可。 在WMBT中新建一个“数据库定义”,向导会让你顺便创建一个“数据库设计项目”,你可以通过刚刚创建的JDBC连接,选择一个数据库,即可。 这时你会发现ESQL代码中那些烦人的提示已经消失了。   在ESQL中编写SQL语句   ESQL中使用SQL和一般的SQL语句基本一致,除了在指定哪个数据表的时候,要用类似下面的语法: SELECT FROM Database.SchemaName.TableName 其中的“Database”是关键字,一定要有的,表示从数据库中读取,这是因为ESQL中不单可以操作数据库,还可以对逻辑树、数组对象使用select、delete等SQL语法,“Database”起到标识的作用。 给出这样一条语句: set LocalEnvironment.temp[] = select * from Database.TEST.example 假设example有id和info两个字段,共三条记录,那么执行后的结果是LocalEnvironment 树下面产生三个temp元素,每个元素都包含一个id和info子元素,对应数据库的记录。 select返回的都是数组类型,因此不能set LocalEnvironment.temp = select ….,那样会在打包时报错,一定要标明是数组 此外,像上面那样直接书写SQL语句并赋值给一个数组变量,MB会在编译和执行期间检查SQL语法是否合格,这个特性虽然很有用,但有时候也会适得其反,比如要在Oracle使用序列来实现主键自增时,insert语句要写成: insert into example (id,info) VALUES ( SEQ_EXAMPLE.nextval , ‘xxxxx’) 这里SEQ_EXAMPLE是序列的名称。而在MB里面这样会保存,提示找不到SEQ_EXAMPLE这个对象的定义。解决方法是使用ESQL的PASSTHRU函数,这个函数直接将SQL语句发送给数据库去解析执行,就可以绕开MB的检查。   IBM MessageBroker笔记系列(七)   这篇是针对WebService的一些使用技巧 入门 MB对WebService的支持其实不是它的强项,它的长处在于MQ,MB就是基于MQ的,所谓“消息代理”,感觉就是在消息中间件基础上增加了“代理”功能。MB的前身是MQ Integrator,所以从字面意思上来看,也是“message -> integrator -> broker”,越来越复杂的功能。据说,Websphere ESB对于java和webservice的支持更加完善,不过我也没有用过。 扯了那么多,回到主题。在MB V6.0中,对WebService的支持还是比较弱的,以单纯的http节点,加上程序员在compute节点中手工操作消息树,包括对SOAP包进行封包(envelop)和解包(extract)都要自力更生,难度比较大,且不够直观简练,给人感觉是MB对webservice支持不够,不得已而为之。到了V6.1,情况终于有了较大的改观,MB提供专门的webservice节点了。 所以,如果你还在看《精通WMB》,那么webservice那一章可以先放下了,去WMBT的“样本库”,看看webservice的教程,会发现不仅仅有专门的SOAP节点,还对IBM的WSRR也有专门的支持,甚至还提供异步的SOAP节点。因此在MB中使用webservice,第一步推荐先去学这些样例。特别留意使用http和soap节点时,前后的compute节点的ESQL代码的差异,体会SOAP节点的方便。   技巧   看完SOAP节点的样例之后,会发现里面的那个子流,其实也挺复杂的,好像不比http节点简单 http节点 SOAP节点 其实,Envelope和Extract节点是MB6.1才有的,没有他们,http节点构造webservcie会变得很啰嗦;另外,以上的流程图,是可以通过向导的方式生成的,这一点非常方便。 首先在消息集项目中,“从WSDL文件”新建一个消息定义;然后将这个WSDL文件拖到某个消息流的编辑界面中,自动弹出一个向导,简单地一步步走,就能生成以上的消息流。   动态设置webservice地址   在以上生成的消息流中,HTTP节点和SOAP节点都有一个属性,用于指定webservice的请求地址,但这是写死在节点中的。如果要在运行过程中动态设置呢?比如根据消息内容,选择合适的URL地址进行webservice调用。 其实很简单,只需在SOAP或HTTP节点之前的某个compute节点中,在LocalEnvironment中设置一个相应的值即可 · HTTP节点: SET OutputLocalEnvironment.Destination.HTTP.RequestURL = ‘webservice地址’ · SOAP节点: set OutputLocalEnvironment.Destination.SOAP.Request.Transport.HTTP.WebServiceURL = ‘webservice地址’ 注意,切记把compute节点的“计算方式”设置为“消息和LocalEnvironment”,总之至少要包括LocalEnvironment,否则设置了等于没设置,compute节点不会将LocalEnvironment往下传 当然,以上步骤也可以在Filter、Database这些节点做,那样就没有Input和OutputLocalEnvironment之分了   IBM MessageBroker笔记系列(八)     本来这一篇要写ESQL的一些语法细节的,但是过几天就要去客户那里部署系统了,上周也花了一个礼拜时间,一边学linux,一边学怎么在linux上部署MB。所以这一篇先讨论如何在linux上安装、配置WMB 准备 先说一下硬件和操作系统环境: 机器:IBM的某型号刀片机,4G内存 操作系统:RED HAT LINUX 64bit企业版 业务数据库:Oracle 10g WMB6.1,安装在WMQ6之上,使用DB2 9作为代理数据库 以上软件都是安装在同一台刀片机上 另外,WMBT6.1安装在我自己的windows机器上,用于开发MB程序,并远程部署到服务器上 参考资料 按理说参考资料应该是放在最后面的,只是我的这些安装心得都是来自这些参考资料,为防止我的个人经验误导读者的安装过程,所以先列出以下资料。有空慢慢看的话,还是应该以这些官方资料为准 《messagebroker_Configuration_Administration_and_Security》 这本是权威了,除了对应的版本有些旧(WMB 6.0),整体内容还是很详细的,几乎所有平台上的MB安装、配置都有详细的介绍。只是内容多得让人看起来眼晕。 MB info center 内容和上面那本书差不多,比较精炼,但如果配置出了问题,未必能找到详细的解答 最后,强烈建议,如果是linux菜鸟(像我这种),赶紧补习一些linux的基本知识,比如环境变量怎么设置 安装 其实安装过程还是比较简单的,先安装MQ,再安装MB。MQ比较麻烦一点,要用rpm,而MB则带有一个Eclipse的安装界面,和windows上和相似,跟着向导走就行了。安装好之后,会发现db2也随着MB一起装好了 默认安装路径(注意大小写): MB:/opt/ibm/mqsi DB2:/opt/ibm/db2 创建代理数据库 红皮书上已经有详细说明,我就偷个懒,copy并解释一下 1. Log on as root. 2. Create a database instance. Use the commands shown here for guidance for the different platforms. a. On AIX: /usr/l
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服