整合端點

本節介紹 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>

回顧一下

  • 入站通道介面卡用於單向整合,將資料帶入訊息應用。

  • 出站通道介面卡用於單向整合,將資料從訊息應用傳送出去。

  • 入站閘道器用於雙向整合流,其中其他系統呼叫訊息應用並接收回復。

  • 出站閘道器用於雙向整合流,其中訊息應用呼叫外部服務或實體並期望結果。

下表彙總了各種端點,並提供了指向相應章節的快速連結。

表 1. 端點快速參考
模組 入站介面卡 出站介面卡 入站閘道器 出站閘道器

AMQP

入站通道介面卡

出站通道介面卡

入站閘道器

出站閘道器

Apache Camel

N

出站通道介面卡

N

出站閘道器

Apache Cassandra

N

出站通道介面卡

N

出站閘道器

Debezium

Debezium 入站通道介面卡

N

N

N

事件

接收 Spring 應用事件

傳送 Spring 應用事件

N

N

Feed

Feed 入站通道介面卡

N

N

N

檔案

讀取檔案'tail’ing 檔案

寫入檔案

N

寫入檔案

FTP(S)

FTP 入站通道介面卡

FTP 出站通道介面卡

N

FTP 出站閘道器

GraphQL

N

N

N

GraphQL 出站閘道器

Hazelcast

Hazelcast 入站通道介面卡

Hazelcast 出站通道介面卡

N

N

HTTP

HTTP 名稱空間支援

HTTP 名稱空間支援

HTTP 入站元件

HTTP 出站元件

JDBC

入站通道介面卡儲存過程入站通道介面卡

出站通道介面卡儲存過程出站通道介面卡

N

出站閘道器儲存過程出站閘道器

JMS

入站通道介面卡訊息驅動通道介面卡

出站通道介面卡

入站閘道器

出站閘道器

JMX

通知監聽通道介面卡屬性輪詢通道介面卡樹輪詢通道介面卡

通知釋出通道介面卡操作呼叫通道介面卡

N

操作調用出站閘道器

JPA

入站通道介面卡

出站通道介面卡

N

更新出站閘道器檢索出站閘道器

Apache Kafka

訊息驅動通道介面卡入站通道介面卡

出站通道介面卡

入站閘道器

出站閘道器

郵件

郵件接收通道介面卡

郵件傳送通道介面卡

N

N

MongoDB

MongoDB 入站通道介面卡

MongoDB 出站通道介面卡

N

N

MQTT

入站(訊息驅動)通道介面卡

出站通道介面卡

N

N

R2DBC

R2DBC 入站通道介面卡

R2DBC 出站通道介面卡

N

N

Redis

Redis 入站通道介面卡, Redis 佇列入站通道介面卡, Redis Store 入站通道介面卡, Redis Stream 入站通道介面卡

Redis 出站通道介面卡, Redis 隊列出站通道介面卡, RedisStore 出站通道介面卡, Redis Stream 出站通道介面卡

Redis 佇列入站閘道器

Redis 出站命令閘道器Redis 隊列出站閘道器

資源

資源入站通道介面卡

N

N

N

RSocket

N

N

RSocket 入站閘道器

RSocket 出站閘道器

SFTP

SFTP 入站通道介面卡

SFTP 出站通道介面卡

N

SFTP 出站閘道器

SMB

SMB 入站通道介面卡, SMB 流式入站通道介面卡

SMB 出站通道介面卡

N

SMB 出站閘道器

STOMP

STOMP 入站通道介面卡

STOMP 出站通道介面卡

N

N

從流中讀取

寫入流

N

N

Syslog

Syslog 入站通道介面卡

N

N

N

TCP

TCP 介面卡

TCP 介面卡

TCP 閘道器

TCP 閘道器

UDP

UDP 介面卡

UDP 介面卡

N

N

WebFlux

WebFlux 入站通道介面卡

WebFlux 出站通道介面卡

WebFlux 入站閘道器

WebFlux 出站閘道器

Web Services

N

N

Web Service 入站閘道器

Web Service 出站閘道器

Web Sockets

WebSocket 入站通道介面卡

WebSocket 出站通道介面卡

N

N

XMPP

XMPP 訊息XMPP Presence

XMPP 訊息XMPP Presence

N

N

ZeroMQ

ZeroMQ 入站通道介面卡

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 流上處理,例如為請求客戶端生成補償回復。