IP 配置属性

下表描述了可用于配置 IP 连接的属性:

Table 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 地址进行反向查找,以将其转换为用于消息头的 hostname。 如果为 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 入站通道适配器的属性:

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

port

适配器侦听的端口。

multicast

true, false

UDP 适配器是否使用多播。

multicast-address

multicasttrue 时,适配器加入的多播地址。

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 地址进行反向查找,以将其转换为用于消息头的 hostname。 如果为 false,则使用 IP 地址。 默认值:false

下表描述了可用于配置 UDP 出站通道适配器的属性:

Table 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.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 表达式,用于评估以确定哪个 SocketAddress 用作传出 UDP 数据包的目标地址。

socket-expression

SpEL 表达式

一个 SpEL 表达式,用于评估以确定哪个数据报套接字用于发送传出 UDP 数据包。

下表描述了可用于配置 TCP 入站通道适配器的属性:

Table 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

指定一个 TaskScheduler 用于管理 client-mode 连接。 如果未指定,则默认为全局 Spring Integration taskScheduler bean,其默认池大小为 10。 请参阅 配置任务调度器

下表描述了可用于配置 TCP 出站通道适配器的属性:

Table 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

指定一个 TaskScheduler 用于管理 client-mode 连接。 如果未指定,则默认为全局 Spring Integration taskScheduler bean,其默认池大小为 10。 请参阅 配置任务调度器

下表描述了可用于配置 TCP 入站网关的属性:

Table 6. TCP 入站网关属性
属性名称 允许值 属性描述

connection-factory

连接工厂必须是服务器类型。

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

指定一个 TaskScheduler 用于管理 client-mode 连接。 如果未指定,则默认为全局 Spring Integration taskScheduler bean,其默认池大小为 10。 请参阅 配置任务调度器

下表描述了可用于配置 TCP 出站网关的属性:

Table 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

网关将回复发送到回复通道时等待的时间(以毫秒为单位)。 仅当回复通道可能阻塞时(例如当前已满的有界队列通道)才适用。

async

发送后释放发送线程;回复(或错误)将在接收线程上发送。

unsolicited MessageChannel

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