Spring Integration學習筆記一
一、概述
Spring Integration是Spring框架建立的又一個API,面向企業應用整合(EAI)。它是可以理解為一種ESB框架,可以和EJB、RMI、JMS這些標準技術協同使用,使得各個應用之間可以協同通訊。另一個優點是它可以和應用一起部署而不需要單獨建立ESB伺服器。
二、Spring Integration 元件
1.1、 Messages (訊息)
Spring Integration 中,將訊息定義為一個通用的介面,它封裝了Spring Integration需要操縱的資料和該資料的元資料。
A、PayLoad (負載):Spring Integration需要操縱的資料,它可以是任何Java的POJO。你可以根據情況將其轉換為特定的或者自定義的資料型別。
B、MessageHeaders (訊息頭):它是PayLoad的元資料。 例如一些通用的請求資訊。訊息頭是一個 org.springframework.integration.MessageHeaders型別的物件,
本質上它是一個以String型別為Key,Object型別為Value的只讀Map,也就是說訊息頭中的資訊是不可更改的。它也可以用來儲存任何的鍵值對。
在Spring Integration中通常MessageBuilder API來建立,並且Spring Integration預定義了一些訊息頭例項:
訊息頭名稱 | 訊息頭資料型別 |
ID | java.util.UUID |
TIMESTAMP | java.lang.Long |
CORRELATION_ID | java.lang.Object |
REPLY_CHANNEL | java.lang.Object |
ERROR_CHANNEL | java.lang.Object |
SEQUENCE_NUMBER | java.lang.Integer |
SEQUENCE_SIZE | java.lang.Integer |
EXPIRATION_DATE | java.lang.Long |
PRIORITY | java.lang.Integer |
1.2 、Message Channel(訊息通道)
Message Channel 可以看成一種pipe(管道),訊息通過它進行移動(流轉)。訊息生產者傳送一個訊息到Message Channel,訊息消費者從一個Message Channel中接收一條訊息。並且Message Channel還提供了一個切入點來截斷(interception)和監控(monitoring)訊息。Message Channel有兩種模式,一種模式是Point-to-Point(點對點)模式,另一種是Publish/Subscribe(釋出/訂閱)模式;前者保證在任何時候,傳送者傳送的同一個訊息都只有一個接收者;而後者則允許生產者和消費者之間是一對多的關係,多個消費這可以接受同一個訊息;當所有的訂閱了該訊息的消費者都消費了該訊息後訊息會被標記為已接受並且從通道中刪除。另外訊息通道還可以快取訊息,有的訊息可以直接釋出接收者,有的訊息可以傳送到一個Message Channel佇列進行快取。
1.3、Message Endpoint(訊息端點)
Message Endpoint是介於訊息系統和應用程式程式碼之間的一個抽象層。Message Endpoint用來執行類似 生成或者消費訊息,連線應用層程式碼,連線擴充套件服務或者其他應用等任務。當以Spring Integration的方式傳送資料的時候,資料會沿著Message Channel從一個Message Endpoint移動到另一個Message Endpoint;資料還可以通過使用一種叫做介面卡(adapter)的Message Endpoint從外部系統傳入訊息框架。Spring Integration提供了大量的adapters來對接外部系統和服務。通常Spring Integration以宣告式配置的方式定義Message Endpoint。下表列出了Spring Integration中的幾種Message Endpoint。
訊息端點名稱 | 訊息端點概述 |
Transformer(轉換器) | 轉換訊息的內容或者結構,返回轉換後的訊息。 |
Filter(過濾器) | 決定訊息是否能夠通過訊息通道(進行傳遞) |
Router(路由器) | 基於一個指定的訊息的上下文,決定將訊息傳送到哪個訊息通道(類是路由器的概念) |
Splitter(分離器) | 可以將一個輸入訊息分解為多個訊息併發送到合適的訊息通道。 |
Aggregator(聚合器) | 可以將多個訊息組合成一個訊息。因為它需要維持訊息狀態,和分離器比起來,聚合器通常比較複雜 |
Service activator(服務對接器) | 訊息通道和服務例項之間的介面,通常包含應用層的業務邏輯程式碼。 |
Channel adapter(通道介面卡) | 用來連線訊息通道和其他系統 |