Netty不会在ConnectException上重试连接

时间:2015-06-24 07:57:06

标签: java apache-camel netty

我有2条Camel路线:

from("jms:queue:" + queue + "?transacted=true")
        .bean(interfaceProcessor, "prepareMessage")
        .to("direct:interfaceRoute")
        .end();

from("direct:interfaceRoute")
        .errorHandler(noErrorHandler())
        .setExchangePattern(ExchangePattern.OutIn)
        .to("netty:tcp://" + address + ":" + port + "?clientMode=true&requestTimeout=" + requestTimeout + "&disconnect=true")
        .bean(interfaceProcessor, "doStuff");

将消息放在JMS队列上时会触发第一个路由。然后在bean中处理该消息,并将返回值放在单独的路由上以将其发送到远程主机。

当某些内容进入direct:interfaceRoute时,Netty应该打开与某个地址/端口的新连接作为客户端。这工作正常,但是当远程主机不可用时,我得到一个ConnectException并完全停止运行。如果发生这种情况,它需要继续重试,直到远程主机可用。

我试过制作'鞋帮' route transacted我删除了在套接字上进行实际发送的路由上的任何错误处理程序。这适用于ReadTimeoutException(远程主机不及时响应)。发生这种情况时,将重新发送该消息,直到远程主机响应。我需要对ConnectException进行相同的处理。

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

目前尚不支持。但是我们将在下一个版本中添加对此的支持。有关于此的票据