Apache camel 驼峰网络负载平衡器-未收到响应异常

Apache camel 驼峰网络负载平衡器-未收到响应异常,apache-camel,Apache Camel,我在使用ApacheCamel、Netty4组件和负载平衡时遇到了意外的camelException。当代码正常工作并返回响应时,当网络连接关闭时,Camel仍会在最后一次交换上抛出CamelExchangeException from("netty4:tcp://localhost:9090?sync=true&textline=true") .setBody(simple("pong")) .setHeader(NettyConstants.NETTY_CL

我在使用ApacheCamel、Netty4组件和负载平衡时遇到了意外的
camelException
。当代码正常工作并返回响应时,当网络连接关闭时,Camel仍会在最后一次交换上抛出
CamelExchangeException

 from("netty4:tcp://localhost:9090?sync=true&textline=true")
      .setBody(simple("pong"))
      .setHeader(NettyConstants.NETTY_CLOSE_CHANNEL_WHEN_COMPLETE, simple("true", Boolean.class));

 from("timer:foo?delay=10000")
      .to("log:inbound?showAll=true")
      .process((Exchange exchange) -> {
           exchange.getIn().setBody("ping");
       })
       .loadBalance(new LoadBalancer())
       .to("netty4:tcp://localhost:9090?sync=true&textline=true")
       .end()
       .to("log:outbound?showAll=true");
这是负载平衡器

public class LoadBalancer extends SimpleLoadBalancerSupport {
    @Override
    public void process(Exchange exchange) throws Exception {
        this.getProcessors().get(0).process(exchange);
    }
}
例外情况

org.apache.camel.CamelExchangeException: No response received from remote server: localhost:9090. Exchange[ID-DESKTOP-6JJUOT9-1529441233240-0-21]
at org.apache.camel.component.netty4.handlers.ClientChannelHandler.channelInactive(ClientChannelHandler.java:133)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:245)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:231)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive(AbstractChannelHandlerContext.java:224)
at io.netty.channel.ChannelInboundHandlerAdapter.channelInactive(ChannelInboundHandlerAdapter.java:75)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:245)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:231)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive(AbstractChannelHandlerContext.java:224)
at io.netty.handler.codec.ByteToMessageDecoder.channelInputClosed(ByteToMessageDecoder.java:377)
at io.netty.handler.codec.ByteToMessageDecoder.channelInactive(ByteToMessageDecoder.java:342)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:245)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:231)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive(AbstractChannelHandlerContext.java:224)
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelInactive(DefaultChannelPipeline.java:1409)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:245)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:231)
at io.netty.channel.DefaultChannelPipeline.fireChannelInactive(DefaultChannelPipeline.java:927)
at io.netty.channel.AbstractChannel$AbstractUnsafe$8.run(AbstractChannel.java:822)
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:163)
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:404)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:463)
at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:886)
at java.lang.Thread.run(Thread.java:745)
如果取出负载平衡器或保持连接打开,则不会引发相同的异常


骆驼2.21.1版

你在问问题吗?我认为这是骆驼的一个错误。我们遇到了同样的问题,我们只是抓住了这个例外,继续走这条路。