天天看點

SOA之企業應用內建EAI

企業內建對公司管理提出顯著轉變的需要,緻力于 一體化的努力通常對業務産生深遠的影響,但是如果缺乏标準的內建方案,導緻概念和技術學習難度增加。

內建定義:将不同的計算機系統,公司或個人連接配接起來, 企業內建是使不同的應用程式協同工作,産生一個統一的功能集的任務。

內建類型

  • 資訊門戶
  • 資料複制
  • 共享業務功能
  • 面向服務的體系結構
  • 分布式業務流程
  • 企業對企業內建

企業內建模式:

  • 檔案傳輸
  • 共享資料庫
  • 遠端過程調用
  • 消息

基于消息的EAI:

SOA之企業應用內建EAI

消息內建分以下步驟實施:

  • construction消息建構
  • Channels 通道
  • Endpoints 端點
  • Routing 路由
  • Transformation 轉換
  • Management 管理
  • Messaging Models 消息模型
  • Transactions 事務

  目前有Spring Integration, Mule ESB 和 Apache Camel. 三種開源內建架構,它們都遵循企業內建模式EIP(EIP, http://www.eaipatterns.com),各有細微的差別。

Construction 消息建構

  消息是一個資料單元格式, 一個消息由一個頭,屬性和主體的組成 發送方轉換資料輸出構造消息 接收方重新從消息恢複成自己的資料模型 。

  (1). Spring內建的消息模型如下:

SOA之企業應用內建EAI

特點:

  • 一個基于模型的消息中最簡單的形式
  • 使用泛型規定消息體類型
  • 無marshaling 或 un-marshaling 需要

  (2). JBI(Java業務內建)的模型如下:

SOA之企業應用內建EAI

特點:支援附件和XML 以及安全。

  (3). Apache Camel的消息模型:

SOA之企業應用內建EAI

消息交換模式(基于WSDL 2.0 message exchange patterns EXP):消息被封裝到消息交換Exchange中。

SOA之企業應用內建EAI

Channels 消息通道

  信道是用于從發送者發送消息到接收器的網關, 發送者和接收者不知道對方,實作最大化松耦合,也 可以被稱為管pipe

  (1). Spring Integration的通道是一個純POJO模型:

SOA之企業應用內建EAI

  (2). Java Business Integration JBI是一個建立消息交換的工廠,支援同步或異步。

SOA之企業應用內建EAI

Endpoints 消息端點

  一個端點是一個消息傳遞應用程式,它能夠發送和接收消息的用戶端, 消息端點封裝了消息系統,并與應用程式分離,也是其一部分,自定義了為特定的應用程式和任務的一般消息處理API

SOA之企業應用內建EAI

  (1). Spring Integration實作:

SOA之企業應用內建EAI

代碼實作如下:

SOA之企業應用內建EAI

  消息通道最大的問題是:通道容納消息總會有一個容量,如果有大量消息發送到,而接受者并沒有來得及消費,那麼需要很大的容量保留這些消息,這是因為傳統通道是一個順序處理的模型,使用SEDA: Staged Event-Driven Architecture 階段EDA能夠解決這個問題。通過引入線程池立即響應消息處理。

  事件隊列接受傳入的事件, 事件處理器EventHanlder處理傳入的事件, 線程池提供了線程功能的事件處理程式, 該控制器調節資源配置設定和排程動态。

SOA之企業應用內建EAI

Routing 消息路由

  消息路由器會從一個消息通道消費消息,并根據一組條件将其重新釋出到不同的消息管道.

SOA之企業應用內建EAI

Spring內建架構實作路由代碼如下:

SOA之企業應用內建EAI

消息轉換Transformation

   消息轉換是轉換一個資料格式到另一種的過濾器。在消息處理前可以使用各種過濾器:

SOA之企業應用內建EAI

系統管理

   下圖中Control bus控制總線使用由應用程式使用的資料相同的消息傳遞機制,參考工作流設計,分離不同的管道進行傳遞消息。

SOA之企業應用內建EAI

消息模型

   區分為Publish/Subscribe 釋出者/訂閱者 或點對點 Point-to-Point Model,也就是1:N或1:1的模型。

存儲消息

  保證一次且僅一次的消息傳遞,使用 透明的消息用戶端。

SOA之企業應用內建EAI

消息的事務性

   生産者将在事務上下文中發送一個或多個消息, 生産者送出事務; 消費者收到的所有消息, 消費者送出事務。

SOA之企業應用內建EAI

SOA內建架構Spring Integration, Mule ESB or Apache Camel比較

什麼時候使用Apache camel

EDA

使用Apache CXF開發Web服務

使用Spring Webservices建立SOAP服務代理

繼續閱讀