IP 配置属性

下表描述了可以设置以配置IP连接的属性

表1. 连接工厂属性
属性名称 客户端? 服务器? 允许的值 属性描述

type

Y

Y

client, server

确定连接工厂是客户端还是服务器。

host

Y

N

目的地的主机名或IP地址。

port

Y

Y

端口。

serializer

Y

Y

用于序列化有效负载的Serializer实现。默认为ByteArrayCrLfSerializer

deserializer

Y

Y

用于反序列化有效负载的Deserializer实现。默认为ByteArrayCrLfSerializer

using-nio

Y

Y

true, false

连接是否使用NIO。有关更多信息,请参阅java.nio包。参见关于非阻塞I/O (NIO)。默认值:false

using-direct-buffers

Y

N

true, false

使用NIO时,连接是否使用直接缓冲区。有关更多信息,请参阅java.nio.ByteBuffer文档。如果using-niofalse,则必须为false

apply-sequence

Y

Y

true, false

使用NIO时,可能需要重新排序消息。当此属性设置为true时,将correlationIdsequenceNumber头添加到接收到的消息中。参见关于非阻塞I/O (NIO)。默认值:false

so-timeout

Y

Y

默认为0(无限),但对于single-use="true"的服务器连接工厂除外。在这种情况下,它默认为默认回复超时(10秒)。

so-send-buffer-size

Y

Y

参见java.net.Socket. setSendBufferSize()

so-receive-buffer-size

Y

Y

参见java.net.Socket. setReceiveBufferSize()

so-keep-alive

Y

Y

true, false

参见java.net.Socket.setKeepAlive()

so-linger

Y

Y

linger设置为true并使用提供的值。参见java.net.Socket.setSoLinger()

so-tcp-no-delay

Y

Y

true, false

参见java.net.Socket.setTcpNoDelay()

so-traffic-class

Y

Y

参见java.net.Socket. setTrafficClass()

local-address

N

Y

在多宿主系统上,指定套接字绑定的接口的IP地址。

task-executor

Y

Y

指定要用于套接字处理的特定执行器。如果未提供,则使用内部缓存线程执行器。在某些需要使用特定任务执行器(例如WorkManagerTaskExecutor)的平台上需要此功能。

single-use

Y

Y

true, false

指定连接是否可用于多条消息。如果为true,则每条消息都使用新的连接。

pool-size

N

N

此属性不再使用。为了向后兼容性,它设置了积压,但是应该使用backlog来指定服务器工厂中的连接积压。

backlog

N

Y

设置服务器工厂的连接积压。

lookup-host

Y

Y

true, false

指定是否对IP地址执行反向查找以转换为主机名以用于消息头。如果为false,则使用IP地址代替。默认值:false

interceptor-factory-chain

Y

Y

参见TCP连接拦截器

ssl-context-support

Y

Y

参见SSL/TLS支持

socket-factory-support

Y

Y

参见SSL/TLS支持

socket-support

Y

Y

参见SSL/TLS支持

nio-connection-support

Y

Y

参见高级技术

read-delay

Y

Y

long > 0

在之前的读取尝试由于线程不足而失败后,重新尝试读取之前的延迟(以毫秒为单位)。默认值:100。仅当using-niotrue时才适用。

下表描述了可以设置以配置UDP入站通道适配器的属性

表2. UDP入站通道适配器属性
属性名称 允许的值 属性描述

port

适配器侦听的端口。

multicast

true, false

UDP适配器是否使用组播。

multicast-address

当multicast为true时,适配器加入的组播地址。

pool-size

指定可以并发处理的数据包数量。仅当未配置task-executor时才适用。默认值:5。

task-executor

指定要用于套接字处理的特定执行器。如果未提供,则使用内部池化执行器。在某些需要使用特定任务执行器(例如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地址执行反向查找以转换为主机名以用于消息头。如果为false,则使用IP地址代替。默认值:false

下表描述了可以设置以配置UDP出站通道适配器的属性

表3. UDP出站通道适配器属性
属性名称 允许的值 属性描述

host

目的地的主机名或IP地址。对于组播UDP适配器,则为组播地址。

port

目的地的端口。

multicast

true, false

UDP适配器是否使用组播。

acknowledge

true, false

UDP适配器是否需要来自目的地的确认。启用后,需要设置以下四个属性:ack-hostack-portack-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的生存时间属性。控制组播的范围。有关更多信息,请参阅Java API文档。

so-timeout

有关更多信息,请参见java.net.DatagramSocketsetSoTimeout()方法。

so-send-buffer-size

有关更多信息,请参见java.net.DatagramSocketsetSendBufferSize()方法。

so-receive-buffer-size

用于UDP确认数据包。有关更多信息,请参见java.net.DatagramSocketsetReceiveBufferSize()方法。

local-address

在多宿主系统上,对于UDP适配器,指定套接字绑定到的接口的IP地址以用于回复消息。对于组播适配器,它还确定发送组播数据包的接口。

task-executor

指定要用于确认处理的特定执行器。如果未提供,则使用内部单线程执行器。在某些需要使用特定任务执行器(例如WorkManagerTaskExecutor)的平台上需要此功能。一个线程专门用于处理确认(如果acknowledge选项为true)。

destination-expression

SpEL表达式

要计算的SpEL表达式,用于确定将哪个SocketAddress用作传出UDP数据包的目标地址。

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

用于发送未经请求的消息和延迟回复的通道。