Apache camel 驼峰-使用OneException未捕获通道关闭异常
我打开这个问题,因为我在网上找不到任何问题的答案 我使用camel实现了TCP/IP服务器,并定义了如下路由: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
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上设置自定义属性。非常感谢您。我最终使用您描述的解决方案捕获了异常。