整合端點
本節介紹 Spring Integration 提供的各種通道介面卡和訊息閘道器,用於支援與外部系統的基於訊息的通訊。
從 AMQP 到 Zookeeper 的每個系統都有自己的整合要求,本節將介紹這些要求。
端點快速參考表
如前面章節所述,Spring Integration 提供了許多端點,用於與外部系統、檔案系統等進行介面。
為了透明的依賴管理,Spring Integration 提供了一個 bill-of-materials POM,可以將其匯入 Maven 配置中
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.integration</groupId>
<artifactId>spring-integration-bom</artifactId>
<version>6.4.4</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 Store 入站通道介面卡, Redis Stream 入站通道介面卡 |
Redis 出站通道介面卡, Redis 隊列出站通道介面卡, RedisStore 出站通道介面卡, Redis Stream 出站通道介面卡 |
||
資源 |
N |
N |
N |
|
RSocket |
N |
N |
||
SFTP |
N |
|||
SMB |
N |
|||
STOMP |
N |
N |
||
流 |
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 提供了用於與普通 Java 物件 (POJO) 進行介面的端點。如通道介面卡章節所述,<int:inbound-channel-adapter>
元素允許你輪詢 Java 方法以獲取資料。<int:outbound-channel-adapter>
元素允許你向 void 方法傳送資料。如訊息閘道器章節所述,<int:gateway>
元素允許任何 Java 程式呼叫訊息流。這些都無需對 Spring Integration 產生任何原始碼級別的依賴。在這種情況下,出站閘道器的等效功能是使用服務啟用器(參見服務啟用器)來呼叫返回某種型別 Object 的方法。
從 5.2.2
版本開始,所有入站閘道器都可以配置一個 errorOnTimeout
布林標誌,以便在下游流未在回覆超時時間內返回回覆時丟擲 MessageTimeoutException
。計時器直到執行緒將控制權返回給閘道器時才啟動,因此通常僅在下游流是非同步的,或者因某個處理器(例如過濾器)返回 null
而停止時有用。此類異常可以在 errorChannel
流上處理,例如為請求客戶端生成補償回復。