对于最新的稳定版本,请使用 Spring Integration 6.4.3spring-doc.cadn.net.cn

TCP 连接事件

从版本 3.0 开始,对TcpConnection实例由TcpConnectionEvent实例。TcpConnectionEventApplicationEvent因此,任何人都可以接收ApplicationListenerApplicationContext@EventListener方法。 另请参阅事件入站通道适配器spring-doc.cadn.net.cn

TcpConnectionEvents具有以下属性:spring-doc.cadn.net.cn

  • connectionId:连接标识符,您可以在消息标头中使用该标识符将数据发送到连接。spring-doc.cadn.net.cn

  • connectionFactoryName:连接所属的连接工厂的 Bean 名称。spring-doc.cadn.net.cn

  • throwable:这Throwable(对于TcpConnectionExceptionEvent仅限事件)。spring-doc.cadn.net.cn

  • source:这TcpConnection. 例如,您可以使用它来确定远程 IP 地址getHostAddress()(需要强制转换)。spring-doc.cadn.net.cn

可用TcpConnectionEvents 与特定连接相关的 s,包括:spring-doc.cadn.net.cn

此外,从 4.0 版本开始,TCP 连接工厂中讨论的标准反序列化器现在发出TcpDeserializationExceptionEvent实例。 这些事件包含异常、正在构建的缓冲区,以及在发生异常的点进入缓冲区的偏移量(如果可用)。 应用程序可以使用普通的ApplicationListener@EventListener方法或ApplicationEventListeningMessageProducer(参见接收 Spring 应用程序事件)来捕获这些事件,从而允许分析问题。spring-doc.cadn.net.cn

从版本 4.0.7 和 4.1.3 开始,TcpConnectionServerExceptionEvent每当服务器套接字上发生意外异常(例如BindException当服务器套接字正在使用时)。 这些事件引用了连接工厂和原因。spring-doc.cadn.net.cn

从版本 4.2 开始,TcpConnectionFailedCorrelationEvent每当终端节点(入站网关或协作出站通道适配器)收到无法路由到连接的消息时,都会发布实例,因为ip_connectionIdheader 无效。 出站网关也会在收到延迟回复(发送方线程已超时)时发布此事件。 该事件包含连接 ID 以及cause属性,其中包含失败的消息。spring-doc.cadn.net.cn

从版本 4.3 开始,一个TcpConnectionServerListeningEvent在启动 Server Connection Factory 时发出。 当工厂配置为侦听端口0,这意味着作系统选择端口。 它也可以用来代替轮询isListening(),如果您需要在启动连接到 socket 的其他进程之前等待。spring-doc.cadn.net.cn

为了避免延迟侦听线程接受连接,该事件将在单独的线程上发布。

从版本 4.3.2 开始,TcpConnectionFailedEvent每当无法创建客户端连接时发出。 事件的来源是连接工厂,您可以使用它来确定无法建立连接的主机和端口。spring-doc.cadn.net.cn

要使用单个ApplicationListener(或@EventListener方法)来接收所有这些事件(包括TcpConnectionEvents),将监听器配置为接收IpIntegrationEvents.spring-doc.cadn.net.cn