对于最新的稳定版本,请使用 Spring Integration 6.5.1spring-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,与特定连接相关的包括:spring-doc.cadn.net.cn

此外,从 4.0 版开始,TCP 连接工厂中讨论的标准反序列化程序现在发出TcpDeserializationExceptionEvent在解码数据流时遇到问题的情况。 这些事件包含异常、正在生成的缓冲区以及异常发生点的缓冲区 ((如果可用) 的偏移量。 应用程序可以使用普通的ApplicationListener@EventListener方法或ApplicationEventListeningMessageProducer(参见接收 Spring Application 事件)来捕获这些事件,从而分析问题。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在启动服务器连接工厂时发出。 当工厂配置为侦听端口时,这很有用0,这意味着作系统选择端口。 它也可以代替轮询isListening(),如果您需要等待才能启动连接到套接字的其他进程。spring-doc.cadn.net.cn

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

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

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