如何在 TcpInboundGateway 上捕获套接字异常?

How to catch socket exceptions on TcpInboundGateway?

我正在为 socket 客户使用 spring-integrationTcpInboundGateway

TcpInboundGateway.doOnMessage()中,流是通过套接字连接发送的。如果发生异常,例如因为套接字已关闭,则只有 spring 错误日志 "Failed to send reply".

但我想显式处理这些套接字错误。我怎样才能在所需的 class 中捕获这些错误?

我们可能应该更改它以传播异常,但这将是一种行为更改,因此我们可能必须仅在 4.2 中执行此操作,除非我们将其作为一个选项。

实际上,经过进一步审查;这无法容纳 - 您必须通过 connection exception event.

处理异常

发送是在入站线程上执行的,而不是您的发送线程。

我们可以增强异常事件以包括失败的出站消息。

编辑:

或者,使用一对 collaborating channel adapters 而不是入站网关。

这样,发送是在发送回复的线程上执行的,您可以捕获异常。