IP Configuration Attributes

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

Table 1. Connection Factory Attributes
Attribute Name Client? Server? Allowed Values Attribute Description

type

Y

Y

client, server

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

host

Y

N

目标的主机名或 IP 地址。

port

Y

Y

The port.

serializer

Y

Y

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

deserializer

Y

Y

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

using-nio

Y

Y

true, false

连接是否使用 NIO。有关详细信息,请参阅 java.nio`包。参见 About Non-blocking 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`时,将向接收到的消息添加 `correlationId`和 `sequenceNumber`标头。参见 About Non-blocking I/O (NIO)。默认值: `false

so-timeout

Y

Y

如果使用 single-use="true" 的服务器连接工厂除外,则默认为 0(无穷大)。在这种情况下,它默认为默认回复超时(10 秒)。

so-send-buffer-size

Y

Y

See java.net.Socket. setSendBufferSize().

so-receive-buffer-size

Y

Y

See java.net.Socket. setReceiveBufferSize().

so-keep-alive

Y

Y

true, false

See java.net.Socket.setKeepAlive().

so-linger

Y

Y

使用给定的值将 linger 设置为 true。参见 java.net.Socket.setSoLinger()

so-tcp-no-delay

Y

Y

true, false

See java.net.Socket.setTcpNoDelay().

so-traffic-class

Y

Y

See 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

See TCP Connection Interceptors.

ssl-context-support

Y

Y

See SSL/TLS Support.

socket-factory-support

Y

Y

See SSL/TLS Support.

socket-support

Y

Y

See SSL/TLS Support.

nio-connection-support

Y

Y

See Advanced Techniques.

read-delay

Y

Y

long > 0

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

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

Table 2. UDP Inbound Channel Adapter Attributes
Attribute Name Allowed Values Attribute Description

port

适配器侦听的端口。

multicast

true, false

UDP 适配器是否使用多播。

multicast-address

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

pool-size

指定可以同时处理多少个数据包。仅当任务执行程序未配置时才适用。默认值: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 出站通道适配器的属性:

Table 3. UDP Outbound Channel Adapter Attributes
Attribute Name Allowed Values Attribute Description

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 expression

一个 SpEL 表达式,对其进行评估以确定将哪个 SocketAddress 用作发往 UDP 数据包的目标地址。

socket-expression

SpEL expression

一个 SpEL 表达式,对其进行评估以确定用于发送发往 UDP 数据包的数据报套接字。

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

Table 4. TCP Inbound Channel Adapter Attributes
Attribute Name Allowed Values Attribute Description

channel

将入站消息发送到的通道。

connection-factory

如果连接工厂的类型为 server,则工厂由此适配器 “owned”。如果类型为 client,则工厂由出站通道适配器 “owned”,并且此适配器接收由出站适配器创建的连接上的任何传入消息。

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。参见 Configuring the Task Scheduler

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

Table 5. TCP Outbound Channel Adapter Attributes
Attribute Name Allowed Values Attribute Description

channel

出站消息到达的通道。

connection-factory

如果连接工厂的类型为 client,则将由此适配器 “owned” 工厂。如果其类型为 server,则将由入站通道适配器 “owned” ,而此适配器将尝试将消息与接收原始入站消息的连接相关联。

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。参见 Configuring the Task Scheduler

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

Table 6. TCP Inbound Gateway Attributes
Attribute Name Allowed Values Attribute Description

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。参见 Configuring the Task Scheduler

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

Table 7. TCP Outbound Gateway Attributes
Attribute Name Allowed Values Attribute Description

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

网关在发送回复至回复信道时等待的毫秒数。仅在回复信道可能被阻塞的情况下适用(例如,当前已满的绑定 QueueChannel)。

async

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

unsolicited MessageChannel

发送未经请求的消息和迟到的回复的信道。