ESB近期研究總結

來自: http://blog.sina.com.cn/s/blog_493a84550102w4ig.html

近期的重點還是進一步對開源ESB和相關組件產品進行研究,簡單總結如下:


對于開源Talend ESB前面已經有文章介紹到是一款相當優秀的ESB集成產品套件,由于Talend本身是以做ETL起家的,因此產品對數據庫和大數據的集成能力相當強。對于Talend ESB的測試,近期重點是做了在Mediation模式下對Camel流程設計的測試,整體功能基本能滿足使用要求,但是相當對于直接使用Camel本身存在一定程度的封閉性。

由于使用了routines.system.api這個talend自己的包,因此talend導出的kar包部署到servicemix是無法運行的。嘗試單獨建立了一個elicpse工程導入相關的代碼和routines.system.api包相關的java源代碼文件。雖然能夠maven編譯通過,但是通過bundle:install安裝到servicemix仍然無法運行。

對于camel組件的可視化設計,在talend里面沒有使用類似blueprint和spring xml這種配置文件,而是talend自己的一種配置文件格式,這個可以在{routinename}.item中查看到具體的配置內容。即talend整個思路是首先將圖形化配置內容存到該配置文件,然后再通過配置文件讀取動態的生成java代碼文件。在部署的時候將java代碼進行動態的打包編譯并部署運行。

如果要借用talend的camel設計器,則可以自己來實現對.item文件的讀取,然后生成相應的java代碼文件,即通過自己實現的代碼來實現talend設計器和camel引擎之間的中轉。以解決當前camel的可視化設計問題。

Talend ESB本身的Server端可以看到仍然集成了karaf,camel,cxf,ActiveMQ等,可以看到該Server端實際是包含了開源ServiceMix的所有內容的,只是更加強大。


對于Camel可以說是一款實現企業EIP集成各種場景的基于規則的優秀集成中間件產品,可以看到對于Servicemix和Fuse都是基于Camel來實現,同時Talend本身也包含了Camel組件設計和所有功能的融入。而對于Mule則是較為獨立的一套設計方法和引擎。

對于Camel近期主要做了一些例子的驗證和測試,主要還是圍繞CXF的Web Service和DB集成能力進行。對于CXF本身的集成要實現一個Proxy代理服務相對來說還是相對簡單的,最簡單的代理完全可以通過blueprint的xml配置文件就可以實現,而對于負責的我們則可以自己實現相應的bean,在java代碼里面進行規則處理和邏輯轉換。當然對于簡單的轉換也完全可以通過xpath語句進行即可。

對于DB數據庫的集成,對jdbc數據集成模式進行了測試。但是對于CXF+DB的集成還沒有展開相應的測試。對于DB在Camel里面跑通的例子,當我們部署到servicemix里面的時候運行仍然存在問題,當前還沒有找到具體的原因。及時jar包所依賴的所有包都通過bundle:install安裝完畢,但是在服務jar包部署完成并啟動的時候仍然會有一些報錯問題無法解決,估計還是配置文件或jar包本身版本的原因。這個也導致一個問題,即如何將在camel里面調測通過的內容快速的部署到karaf的osgi環境里面,當前沒有找到具體的快速方法。

基于Camel來實現和定制ESB服務總線是一個可行的線路,畢竟Camel在底層已經有了完善的支撐。重點主要還是缺兩方面的能力,一個是可視化的camel組件設計和編排,一個是管控和治理平臺。如果按這個思路進行做,可以先完善Camel引擎,包括日志,安全,流控等方面的內容,同時增加管控平臺。其次再來考慮設計器的研發,前期可替代方案即是先使用talend或fuse的設計器,對于設計完成的內容再轉到camel里面去運行。

Jboss Fuse ESB

在本周完成對Fuse集成開發環境的初步安裝。前面已經談到過在Redhat收購了jboss后,對于Jboss ESB和原有的Fuse Servicework,包括Switchyard等產品都做了較大幅度的改變。所有內容都全部遷移到了Jboss fuse里面。對于Fuse的安裝首先要安裝Jboss Developer Editon,然后再安裝相應的Fuse插件即可。

對于Fuse集成開發環境上對Camel的設計,可以直接映射到具體的blueprint或spring xml文件上。即該設計器是完全遵循Camel設計和配置文件標準的。那么如果希望找尋camel設計器的替代方案采用Fuse集成開發環境是一個不錯的選擇。

經過對Fuse的簡單使用,可以看到Fuse設計器對Camel組件本身的動態配置和獲取等能力相對還是比較弱,很多內容仍然還是需要手工填寫和完善。舉個簡單的例子來說,當我們對一個CXF組件配置為獲取遠程的WSDL地址時候,在Talend里面是可以動態完成對SericeName,Portname等參數信息的填寫,但是在Fuse里面這些信息仍然需要我們手工填寫。

對于Fuse當前紅帽更多推的是企業版本,也可以將Fuse看做在ServiceMix上增加了設計器和管控治理能力的一個完整企業ESB服務總線產品。個人整體感覺而言雖然Fuse完整的集成了Camel,但是在服務和接口的集成和實現中,易用性仍然不如Talend ESB產品。

</div>

 本文由用戶 sun3ly 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!