Apache camel 驼峰-使用OneException未捕获通道关闭异常

Apache camel 驼峰-使用OneException未捕获通道关闭异常,apache-camel,Apache Camel,我打开这个问题,因为我在网上找不到任何问题的答案 我使用camel实现了TCP/IP服务器,并定义了如下路由: from("netty4:tcp://0.0.0.0:3510") .to("file:target/outbox"); 我有一个客户端,它向这个服务器发送数据。当我断开此客户端时,我可以在日志中看到此异常: [Camel (camel-client) thread #0 - NettyEventExecutorGroup] WARN o.a.c.compo

我打开这个问题,因为我在网上找不到任何问题的答案

我使用camel实现了TCP/IP服务器,并定义了如下路由:

    from("netty4:tcp://0.0.0.0:3510")
    .to("file:target/outbox");
我有一个客户端,它向这个服务器发送数据。当我断开此客户端时,我可以在日志中看到此异常:

    [Camel (camel-client) thread #0 - NettyEventExecutorGroup] WARN  o.a.c.component.netty4.NettyConsumer - Closing channel as an exception was thrown from Netty. Caused by: [java.io.IOException - an existing connection was forcibly closed by the remote host]
我的问题是,我无法使用OneException子句捕获此异常

    onException(IOException.class)
    .log("Exception: ${body}")
    .handled(true)
    .process(new ExceptionProcessor());
程序不会停止,但我希望在客户端断开连接时捕获它以进行处理。
请注意,我可以捕获路由中抛出的其他异常。

您不能将其作为异常处理,因为异常已在netty中捕获并记录。此异常不会从netty传播到netty组件

解决方案有点棘手。您可以扩展SimpleChannelInboundHandler并重写方法
channelInactive
,如中所述。
在此自定义处理程序中,您可以使用与应用程序相关的其他信息在exchange上设置自定义属性。

非常感谢您。我最终使用您描述的解决方案捕获了异常。