整合端點

本節涵蓋 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>

回顧

  • 輸入通道配接器用於單向整合,以將資料帶入訊息傳遞應用程式。

  • 輸出通道配接器用於單向整合,以將資料從訊息傳遞應用程式傳送出去。

  • 輸入閘道器用於雙向整合流程,其中其他系統調用訊息傳遞應用程式並接收回覆。

  • 輸出閘道器用於雙向整合流程,其中訊息傳遞應用程式調用某些外部服務或實體並期望結果。

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

表 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」檔案

寫入檔案

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

訊息驅動通道配接器輸入通道配接器

輸出通道配接器

輸入閘道器

輸出閘道器

Mail

郵件接收通道配接器

郵件傳送通道配接器

N

N

MongoDB

MongoDB 輸入通道配接器

MongoDB 輸出通道配接器

N

N

MQTT

輸入(訊息驅動)通道配接器

輸出通道配接器

N

N

R2DBC

R2DBC 輸入通道配接器

R2DBC 輸出通道配接器

N

N

Redis

Redis 輸入通道配接器Redis 佇列輸入通道配接器Redis 儲存輸入通道配接器Redis 串流輸入通道配接器

Redis 輸出通道配接器Redis 佇列輸出通道配接器RedisStore 輸出通道配接器Redis 串流輸出通道配接器

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

Stream

從串流讀取

寫入串流

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 提供了用於與 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 流程上處理,例如為請求用戶端產生補償回覆。