IP 配置屬性

下表描述了可用於配置 IP 連線的屬性

表 1. 連線工廠屬性
屬性名稱 客戶端? 伺服器? 允許值 屬性描述

type

client, server

確定連線工廠是客戶端還是伺服器。

host

目標的 hostname 或 IP 地址。

port

埠。

serializer

用於序列化負載的 Serializer 實現。預設為 ByteArrayCrLfSerializer

deserializer

用於反序列化負載的 Deserializer 實現。預設為 ByteArrayCrLfSerializer

using-nio

true, false

連線是否使用 NIO。更多資訊請參閱 java.nio 包。參見關於非阻塞 I/O (NIO)。預設值:false

using-direct-buffers

true, false

當使用 NIO 時,連線是否使用直接緩衝區。更多資訊請參閱 java.nio.ByteBuffer 文件。如果 using-niofalse,則此屬性必須為 false

apply-sequence

true, false

當使用 NIO 時,可能需要重新排序訊息。當此屬性設定為 true 時,接收到的訊息將新增 correlationIdsequenceNumber 頭部。參見關於非阻塞 I/O (NIO)。預設值:false

so-timeout

預設為 0 (無限),但 single-use="true" 的伺服器連線工廠除外。在這種情況下,它預設為預設回覆超時 (10 秒)。

so-send-buffer-size

參見 java.net.Socket. setSendBufferSize()

so-receive-buffer-size

參見 java.net.Socket. setReceiveBufferSize()

so-keep-alive

true, false

參見 java.net.Socket.setKeepAlive()

so-linger

linger 設定為 true 並指定值。參見 java.net.Socket.setSoLinger()

so-tcp-no-delay

true, false

參見 java.net.Socket.setTcpNoDelay()

so-traffic-class

參見 java.net.Socket. setTrafficClass()

local-address

在多宿主系統上,指定套接字繫結的介面的 IP 地址。

task-executor

指定用於套接字處理的特定執行器。如果未提供,則使用內部快取執行緒執行器。某些平臺需要使用特定的任務執行器(例如 WorkManagerTaskExecutor),在此情況下需要指定。

single-use

true, false

指定連線是否可用於多個訊息。如果為 true,則每條訊息使用新的連線。

pool-size

此屬性不再使用。為了向後相容,它會設定 backlog,但您應該使用 backlog 來指定伺服器工廠的連線積壓。

backlog

設定伺服器工廠的連線積壓。

lookup-host

true, false

指定是否對 IP 地址進行反向查詢以轉換為用於訊息頭的 hostname。如果為 false,則使用 IP 地址代替。預設值:false

interceptor-factory-chain

參見 TCP 連線攔截器

ssl-context-support

參見 SSL/TLS 支援

socket-factory-support

參見 SSL/TLS 支援

socket-support

參見 SSL/TLS 支援

nio-connection-support

參見 高階技術

read-delay

long > 0

由於執行緒不足導致前一次讀取失敗後,重試讀取前的延遲時間(毫秒)。預設值:100。僅當 using-niotrue 時適用。

下表描述了可用於配置 UDP 入站通道介面卡的屬性

表 2. UDP 入站通道介面卡屬性
屬性名稱 允許值 屬性描述

port

介面卡監聽的埠。

multicast

true, false

UDP 介面卡是否使用多播。

multicast-address

當 multicast 為 true 時,介面卡加入的多播地址。

pool-size

指定可併發處理多少個數據包。僅當未配置 task-executor 時適用。預設值:5。

task-executor

指定用於套接字處理的特定執行器。如果未提供,則使用內部 pooled 執行器。某些平臺需要使用特定的任務執行器(例如 WorkManagerTaskExecutor),在此情況下需要指定。執行緒需求參見 pool-size。

receive-buffer-size

用於接收 DatagramPackets 的緩衝區大小。通常設定為最大傳輸單元 (MTU) 大小。如果使用的緩衝區小於傳送資料包的大小,可能會發生截斷。您可以使用 check-length 屬性檢測到這一點。

check-length

true, false

UDP 介面卡是否期望接收到的資料包中包含資料長度欄位。用於檢測資料包截斷。

so-timeout

更多資訊請參閱 java.net.DatagramSocket 中的 setSoTimeout() 方法。

so-send-buffer-size

用於 UDP 確認資料包。更多資訊請參閱 java.net.DatagramSocket 中的 setSendBufferSize() 方法。

so-receive-buffer-size

更多資訊請參閱 java.net.DatagramSocket.setReceiveBufferSize()

local-address

在多宿主系統上,指定套接字繫結的介面的 IP 地址。

error-channel

如果下游元件丟擲異常,包含異常和失敗訊息的 MessagingException 訊息將被髮送到此通道。

lookup-host

true, false

指定是否對 IP 地址進行反向查詢以轉換為用於訊息頭的 hostname。如果為 false,則使用 IP 地址代替。預設值:false

下表描述了可用於配置 UDP 出站通道介面卡的屬性

表 3. UDP 出站通道介面卡屬性
屬性名稱 允許值 屬性描述

host

目標的 hostname 或 IP 地址。對於多播 UDP 介面卡,即多播地址。

port

目標上的埠。

multicast

true, false

UDP 介面卡是否使用多播。

acknowledge

true, false

UDP 介面卡是否需要目標傳送確認。啟用此功能時,需要設定以下四個屬性:ack-host, ack-port, ack-timeoutmin-acks-for- success

ack-host

acknowledgetrue 時,表示應將確認傳送到的主機或 IP 地址。通常是當前主機,但也可能不同——例如,正在使用網路地址轉換 (NAT) 時。

ack-port

acknowledgetrue 時,表示應將確認傳送到的埠。介面卡將監聽此埠以接收確認。

ack-timeout

acknowledgetrue 時,表示介面卡等待確認的時間(毫秒)。如果在指定時間內未收到確認,介面卡將丟擲異常。

min-acks-for- success

預設為 1。對於多播介面卡,您可以將其設定為更大的值,這要求從多個目標接收確認。

check-length

true, false

UDP 介面卡是否在傳送到目標的資料包中包含資料長度欄位。

time-to-live

對於多播介面卡,指定 MulticastSocket 的 time-to-live 屬性。控制多播的範圍。更多資訊請參閱 Java API 文件。

so-timeout

更多資訊請參閱 java.net.DatagramSocket 的 setSoTimeout() 方法。

so-send-buffer-size

更多資訊請參閱 java.net.DatagramSocket 中的 setSendBufferSize() 方法。

so-receive-buffer-size

用於 UDP 確認資料包。更多資訊請參閱 java.net.DatagramSocket 中的 setReceiveBufferSize() 方法。

local-address

在多宿主系統上,對於 UDP 介面卡,指定套接字繫結用於回覆訊息的介面的 IP 地址。對於多播介面卡,它還決定傳送多播資料包的介面。

task-executor

指定用於處理確認的特定執行器。如果未提供,則使用內部單執行緒執行器。某些平臺需要使用特定的任務執行器(例如 WorkManagerTaskExecutor),在此情況下需要指定。一個執行緒專門用於處理確認(如果 acknowledge 選項為 true)。

destination-expression

SpEL 表示式

一個 SpEL 表示式,用於評估確定出站 UDP 資料包的目標 SocketAddress

socket-expression

SpEL 表示式

一個 SpEL 表示式,用於評估確定用於傳送出站 UDP 資料包的資料報套接字。

下表描述了可用於配置 TCP 入站通道介面卡的屬性

表 4. TCP 入站通道介面卡屬性
屬性名稱 允許值 屬性描述

channel

用於傳送入站訊息的通道。

connection-factory

如果連線工廠的型別是 server,則此介面卡“擁有”該工廠。如果型別是 client,則由出站通道介面卡“擁有”,此介面卡接收出站介面卡建立的連線上的任何入站訊息。

error-channel

如果下游元件丟擲異常,包含異常和失敗訊息的 MessagingException 訊息將被髮送到此通道。

client-mode

true, false

當為 true 時,入站介面卡在建立連線和接收該連線上的入站訊息方面充當客戶端。預設值:false。另請參閱 retry-intervalscheduler。連線工廠必須是 client 型別且 single-use 設定為 false

retry-interval

client-mode 下,指定兩次連線嘗試之間或連線失敗後等待的毫秒數。預設值:60000(60 秒)。

scheduler

true, false

指定用於管理 client-mode 連線的 TaskScheduler。如果未指定,則預設為全域性 Spring Integration taskScheduler Bean,其預設池大小為 10。參見配置任務排程器

下表描述了可用於配置 TCP 出站通道介面卡的屬性

表 5. TCP 出站通道介面卡屬性
屬性名稱 允許值 屬性描述

channel

接收出站訊息的通道。

connection-factory

如果連線工廠的型別是 client,則此介面卡“擁有”該工廠。如果型別是 server,則由入站通道介面卡“擁有”,此介面卡嘗試將訊息與接收到原始入站訊息的連線進行關聯。

client-mode

true, false

當為 true 時,出站介面卡在啟動時嘗試建立連線。當為 false 時,連線在傳送第一條訊息時建立。預設值:false。另請參閱 retry-intervalscheduler。連線工廠必須是 client 型別且 single-use 設定為 false

retry-interval

client-mode 下,指定兩次連線嘗試之間或連線失敗後等待的毫秒數。預設值:60000(60 秒)。

scheduler

true, false

指定用於管理 client-mode 連線的 TaskScheduler。如果未指定,則預設為全域性 Spring Integration taskScheduler Bean,其預設池大小為 10。參見配置任務排程器

下表描述了可用於配置 TCP 入站閘道器的屬性

表 6. TCP 入站閘道器屬性
屬性名稱 允許值 屬性描述

connection-factory

連線工廠必須是 server 型別。

request-channel

用於傳送入站訊息的通道。

reply-channel

可能接收回復訊息的通道。通常,回覆會到達新增到入站訊息頭部的臨時回覆通道。

reply-timeout

閘道器等待回覆的時間(毫秒)。預設值:1000(1 秒)。

error-channel

如果下游元件丟擲異常,包含異常和失敗訊息的 MessagingException 訊息將被髮送到此通道。來自該流程的任何回覆隨後作為響應由閘道器返回。

client-mode

true, false

當為 true 時,入站閘道器在建立連線和接收(以及回覆)該連線上的入站訊息方面充當客戶端。預設值:false。另請參閱 retry-intervalscheduler。連線工廠必須是 client 型別且 single-use 設定為 false

retry-interval

client-mode 下,指定兩次連線嘗試之間或連線失敗後等待的毫秒數。預設值:60000(60 秒)。

scheduler

true, false

指定用於管理 client-mode 連線的 TaskScheduler。如果未指定,則預設為全域性 Spring Integration taskScheduler Bean,其預設池大小為 10。參見配置任務排程器

下表描述了可用於配置 TCP 出站閘道器的屬性

表 7. TCP 出站閘道器屬性
屬性名稱 允許值 屬性描述

connection-factory

連線工廠必須是 client 型別。

request-channel

接收出站訊息的通道。

reply-channel

可選。用於傳送回覆訊息的通道。

remote-timeout

閘道器等待來自遠端系統的回覆的時間(毫秒)。與 remote-timeout-expression 互斥。預設值:10000(10 秒)。注意:在 4.2 之前的版本中,此值預設為 reply-timeout(如果設定)。

remote-timeout-expression

一個 SpEL 表示式,用於評估確定閘道器等待來自遠端系統的回覆的時間(毫秒)。與 remote-timeout 互斥。

request-timeout

如果未使用單次連線工廠,閘道器等待獲取共享連線訪問許可權的時間(毫秒)。

reply-timeout

閘道器將回復發送到 reply-channel 時等待的時間(毫秒)。僅當 reply-channel 可能阻塞(例如當前已滿的有界 QueueChannel)時適用。

async

傳送後釋放傳送執行緒;回覆(或錯誤)將在接收執行緒上傳送。

unsolicited MessageChannel

用於傳送非請求訊息和延遲迴復的通道。