IP 配置属性
下表描述了您可以设置以配置 IP 连接的属性:
表 1. 连接工厂属性
| 属性名称 | 客户端? | 服务器? | 允许的值 | 属性描述 | 
|---|---|---|---|---|
| type | Y | Y | 客户端,服务器 | 确定连接工厂是客户端还是服务器。 | 
| 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来指定服务器工厂中的连接 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 | 指定可以并行处理多少个数据包。仅在未配置任务执行器时适用。默认值: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 outbound 通道适配器的属性:
表 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 表达式,用于评估要使用的 datagram socket 以发送传出 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 IntegrationtaskSchedulerbean,默认线程池大小为 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 IntegrationtaskSchedulerbean,默认线程池大小为 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-interval和scheduler。连接工厂必须是client类型,并且single-use设置为false。 | 
| retry-interval | 在 client-mode下,指定在连接尝试之间或连接失败后的等待时间(以毫秒为单位)。默认值:60000 (60 秒)。 | |
| scheduler | true,false | 指定用于管理 client-mode连接的TaskScheduler。如果没有指定,默认使用全局 Spring IntegrationtaskSchedulerbean,默认线程池大小为 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 | 网关在向回复通道发送回复时等待的时间(以毫秒为单位)。仅适用于回复通道可能会阻塞的情况(例如当前已满的有界 QueueChannel)。 | |
| async | 在发送后释放发送线程;回复(或错误)将在接收线程上发送。 | |
| unsolicitedMessageChannel | 发送未请求的消息和延迟回复的通道。 |