開源ESB-Talent產品研究
由于查找支持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服務總線產品。