开源ESB-Talent产品研究

jopen 8年前

由于查找支持Camel的前端设计器插件,比较偶然的留意到了Talent ESB这款开源产品,最近这几天一直在进行该产品的使用,由于配套的文档何使用手册相对齐全,很多实际在ESB服务集成中常遇到的集成场景都可以很好的实现,Talent整个开源生态线多个产品获得过10大优秀开源产品大奖,确实是诸多值得学习和借鉴之处。

下面对近期研究和验证的一些场景做一下简单记录:


这是ESB封装经常会使用到的一个功能,即对提供对原始Web Service服务的proxy代理服务。对于这个功能当前产品支持的很好,具体的操作主要如下。

a. 首先是新建立一个Web Service,注意可以直接导入本地或远程WSDL文件生成Schema信息.

b. 将WebSerice分配到一个新建的Job作业上,会自动在设计器中生成Request和Response节点。

c. 增加XmlMap节点,增加ESBConsumer节点,Consumer即访问服务的原始地址信息。

d. 在XmlMap数据映射设计器上进行数据映射,注意需要手工导入WSDL的Schema文件信息。

e. 可以在节点之间拖入tLogRow节点进行输入和输出内容的Log日志记录。

这个简单的例子可以看到对于ProxyService,数据映射,log日志记录,WSDL Schem元数据管理都已经得到了很好的支持。在设计完成的组件上面可以直接通过运行按钮进行服务运行和测试。

2)WebService+DB适配数据插入

由于Talend最早本身就是做ETL工具的,可以看到对于ETL相关能力的支持相对强大,基本涵盖了所有常见主流数据的数据查询,数据插入和更新的相关适配器。对于核心操作如下:

a. 首先是新建立一个Web Service,注意可以直接导入本地或远程WSDL文件生成Schema信息.

b. 将WebSerice分配到一个新建的Job作业上,会自动在设计器中生成Request和Response节点。

c. 增加tMysqlOutput节点,并在WS-Request阶段和该节点之间增XMLMap数据映射节点进行数据映射。

d. 对tMysqlOutput进行数据连接和表的配置,配置完成后可以编辑和统计数据库架构信息。

对于DB插入的场景考虑的另外一个重点是由于tMysqlOutput本身没有明确的输出,那么就存在如何将WS-Response节点进行输出的赋值问题。我们实际的场景往往是如果数据处理和插入成功,则将输出参数的Flag信息设置为True,否则设置为False。对于这样一个场景的实现我们采用了通过tAssert和tAssertCatch节点相互配合的方式来实现。

a. 在tMysqlOuput组件运行成功的时候可以触发断言

b. 增加tAssertCatch节点同时捕捉断言和Java异常信息。

c. 在tAssertCatch节点和WS-Response节点之间增加tXMLMap数据映射,将结果信息输出到Response节点。

3)WebService+DB查询结合

这个结合其实最主要的是需要通过WebService传入的参数来实现DB的动态参数化查询,在实现该场景的时候由于tMysqlInput节点本身不支持结构化参数定义和映射。因此需要考虑用其它方式实现。具体为:

a. 首先是新建立一个Web Service,注意可以直接导入本地或远程WSDL文件生成Schema信息.

b. 将WebSerice分配到一个新建的Job作业上,会自动在设计器中生成Request和Response节点。

c. 增加tMysqlInput节点,并进行数据库连接和查询语句的配置。

d. 增加tJavaRow节点,并在WS-Request阶段和该节点之间增XMLMap数据映射,将输入赋值到Java变量中。

e. 增加全局变量定义,并将Java变量的值赋到全局变量中。

f. 增加一个组件运行OK的触发器连接到tMysqlInput节点,即前面赋值成功才触发。

g. 在tMysqlInput节点和Response节点之间进行数据映射,通过tXMLMap节点进行。

h. 主要在Map设计器上面输出需要选择All-in-One,loop节点需要选择对,否则产生多个Reponse而报错。

在这个场景的实现中,我们使用了全局变量和参数定义赋值,触发器的使用。可以看到能够很好的实现上面的参数化通过服务来触发DB数据库的查询操作。也看到在整个服务设计中平台具备的扩展能力。

4)WebSerice中的Json对象处理

相关场景就是可以Request请求收到的是结构化的输出和输出信息,但是最终Reponse时候需要将信息组合成一个完整的Json串输出。对于这种场景平台也能够很好的处理,即通过tWriteJsonField节点来实现。在该节点中可以自己定义完整的Json对象格式,然后通过XmlMap和Request信息进行映射。

对于设计完成的服务部署也很方便,即首先在WebService上进行导出操作,可以导出为.kar扩展名的部署包,然后将将部署包拷贝到container的deploy目录下即可以完成部署操作。

对于Talent ESB本身也提供相关的监控能力,其核心是SAM数据日志采集和监控,首先需要配置相关的数据库资源池和数据信息,对于服务的运行态参数需要设置为Use SAM,即对于服务运行的数据输入和输出信息会全部log到数据库的Event事件日志表中。

整个平台还有很多功能没有仔细研究,但是基本可以看到该平台能够很好的满足当前业务和数据集成中出现的各种常见场景。通过该ESB本身还支持和Camel的集成,支持bigData大数据集成能力,可以算得上一款功能相当完善的ESB服务总线产品。

来自: http://blog.sina.com.cn/s/blog_493a84550102w05b.html