Apache camel 驼峰网络负载平衡器-未收到响应异常
我在使用ApacheCamel、Netty4组件和负载平衡时遇到了意外的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
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版你在问问题吗?我认为这是骆驼的一个错误。我们遇到了同样的问题,我们只是抓住了这个例外,继续走这条路。