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-nio 为 false,则此值必须为 false。 |
apply-sequence | Y | Y | true, false | 在使用 NIO 时,可能需要对消息进行重新排序。当此属性设置为 true 时,接收到的消息将添加 correlationId 和 sequenceNumber 头部。请参阅关于非阻塞 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 支持](ssl-tls.md)。 | |
socket-factory-support | Y | Y | 请参阅 [SSL/TLS 支持](ssl-tls.md)。 | |
socket-support | Y | Y | 请参阅 SSL/TLS 支持。 | |
nio-connection-support | Y | Y | 请参阅高级技巧。 | |
read-delay | Y | Y | long > 0 | 在上一次尝试因线程不足而失败后,重试读取前的延迟(以毫秒为单位)。默认值:100。仅当 using-nio 为 true 时适用。 |
下表描述了可用于配置 UDP 入站通道适配器的属性:
表 2. UDP 入站通道适配器属性
| 属性名称 | 允许值 | 属性描述 |
|---|---|---|
port | 适配器监听的端口。 | |
multicast | true, false | UDP 适配器是否使用组播。 |
multicast-address | 当组播为 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-host、ack-port、ack-timeout 和 min-acks-for- success。 |
ack-host | 当 acknowledge 为 true 时,指定应发送确认信息的主机或 IP 地址。通常是当前主机,但也可能不同——例如,在使用网络地址转换 (NAT) 时。 | |
ack-port | 当 acknowledge 为 true 时,指定应发送确认信息的端口。适配器在此端口监听确认信息。 | |
ack-timeout | 当 acknowledge 为 true 时,指定适配器等待确认的毫秒数。如果未及时收到确认,适配器将抛出异常。 | |
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 入站通道适配器的属性:
表 4. TCP 入站通道适配器属性
| 属性名称 | 允许值 | 属性描述 |
|---|---|---|
channel | 入站消息发送到的通道。 | |
connection-factory | 如果连接工厂的类型为 server,则该工厂由此适配器“拥有”。如果其类型为 client,则它由出站通道适配器“拥有”,并且此适配器接收出站适配器所创建连接上的任何传入消息。 | |
error-channel | 如果下游组件抛出异常,包含该异常和失败消息的 MessagingException 消息将被发送到此通道。 | |
client-mode | true, false | 当为 true 时,入站适配器在建立连接以及随后在该连接上接收传入消息方面充当客户端。默认值:false。另请参阅 retry-interval 和 scheduler。连接工厂的类型必须为 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-interval 和 scheduler。连接工厂必须为 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 | 连接工厂必须为服务器类型。 | |
request-channel | 传入消息被发送到的通道。 | |
reply-channel | 回复消息可能到达的通道。通常,回复到达添加到入站消息头的临时回复通道。 | |
reply-timeout | 网关等待回复的时间(毫秒)。默认值:1000(1秒)。 | |
error-channel | 如果下游组件抛出异常,包含异常和失败消息的 MessagingException 消息将被发送到此通道。该流程的任何回复随后将作为响应由网关返回。 | |
client-mode | true, false | 当为 true 时,入站网关在建立连接方面充当客户端,然后在该连接上接收(并回复)传入消息。默认值:false。另请参阅 retry-interval 和 scheduler。连接工厂必须为 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 | 用于发送未经请求的消息和延迟回复的通道。 |