整合端點
本節涵蓋 Spring Integration 提供的各種通道配接器和訊息傳遞閘道器,以支援與外部系統的基於訊息的通訊。
從 AMQP 到 Zookeeper,每個系統都有其自身的整合需求,本節將涵蓋這些需求。
端點快速參考表
如先前章節所述,Spring Integration 提供了許多端點,用於與外部系統、檔案系統和其他系統介接。
為了透明的依賴性管理,Spring Integration 提供了一個物料清單 POM,可以匯入到 Maven 設定中
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.integration</groupId>
<artifactId>spring-integration-bom</artifactId>
<version>6.3.5</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
回顧
-
輸入通道配接器用於單向整合,以將資料帶入訊息傳遞應用程式。
-
輸出通道配接器用於單向整合,以將資料從訊息傳遞應用程式傳送出去。
-
輸入閘道器用於雙向整合流程,其中其他系統調用訊息傳遞應用程式並接收回覆。
-
輸出閘道器用於雙向整合流程,其中訊息傳遞應用程式調用某些外部服務或實體並期望結果。
下表總結了各種端點,並提供指向適當章節的快速連結。
模組 | 輸入配接器 | 輸出配接器 | 輸入閘道器 | 輸出閘道器 |
---|---|---|---|---|
AMQP |
||||
Apache Camel |
N |
N |
||
Apache Cassandra |
N |
N |
||
Debezium |
N |
N |
N |
|
事件 |
N |
N |
||
Feed |
N |
N |
N |
|
檔案 |
N |
|||
FTP(S) |
N |
|||
GraphQL |
N |
N |
N |
|
Hazelcast |
N |
N |
||
HTTP |
||||
JDBC |
N |
|||
JMS |
||||
JMX |
N |
|||
JPA |
N |
|||
Apache Kafka |
||||
N |
N |
|||
MongoDB |
N |
N |
||
MQTT |
N |
N |
||
R2DBC |
N |
N |
||
Redis |
Redis 輸入通道配接器、 Redis 佇列輸入通道配接器、 Redis 儲存輸入通道配接器、 Redis 串流輸入通道配接器 |
Redis 輸出通道配接器、 Redis 佇列輸出通道配接器、 RedisStore 輸出通道配接器、 Redis 串流輸出通道配接器 |
||
資源 |
N |
N |
N |
|
RSocket |
N |
N |
||
SFTP |
N |
|||
SMB |
N |
|||
STOMP |
N |
N |
||
Stream |
N |
N |
||
Syslog |
N |
N |
N |
|
TCP |
||||
UDP |
N |
N |
||
WebFlux |
||||
Web Services |
N |
N |
||
Web Sockets |
N |
N |
||
XMPP |
N |
N |
||
ZeroMQ |
N |
N |
此外,如 核心訊息傳遞 中所述,Spring Integration 提供了用於與 Plain Old Java Objects (POJO) 介接的端點。 如 通道配接器 中所述,<int:inbound-channel-adapter>
元素可讓您輪詢 Java 方法以取得資料。 <int:outbound-channel-adapter>
元素可讓您將資料傳送至 void
方法。 如 訊息傳遞閘道器 中所述,<int:gateway>
元素可讓任何 Java 程式調用訊息傳遞流程。 這些都可以在不需要任何 Spring Integration 的原始碼層級依賴性的情況下運作。 在此上下文中,輸出閘道器的等效項是使用服務啟動器(請參閱服務啟動器)來調用傳回某種類型的 Object
的方法。
從版本 5.2.2
開始,所有輸入閘道器都可以設定 errorOnTimeout
布林標誌,以便在下游流程未在回覆逾時期間傳回回覆時擲回 MessageTimeoutException
。 計時器在執行緒將控制權返回閘道器後才會啟動,因此通常僅在下游流程是非同步的,或由於某些處理器傳回 null
而停止時才有用,例如 篩選器。 此類例外情況可以在 errorChannel
流程上處理,例如為請求用戶端產生補償回覆。