Netty 不会在 ConnectException 上重试连接
Netty does not retry connection on ConnectException
我有 2 条骆驼路线:
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 中处理该消息,并将 return 值放在单独的路由上以将其发送到远程主机。
当某些东西进入 direct:interfaceRoute
时,Netty 应该作为客户端打开一个到某个 address/port 的新连接。这工作正常,但是当远程主机不可用时,我得到一个 ConnectException
并完全停止运行。如果发生这种情况,它需要不断重试,直到远程主机可用。
我尝试制作 'upper' 路由 transacted
并且我删除了路由上的任何错误处理程序,这些错误处理程序在套接字上进行实际发送。这适用于 ReadTimeoutException
(远程主机未及时响应)。发生这种情况时,将重新发送消息,直到远程主机响应为止。我需要对 ConnectException
.
进行相同的处理
我怎样才能做到这一点?
目前不支持。但我们将在下一个版本中添加对此的支持。有关于这个的票
我有 2 条骆驼路线:
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 中处理该消息,并将 return 值放在单独的路由上以将其发送到远程主机。
当某些东西进入 direct:interfaceRoute
时,Netty 应该作为客户端打开一个到某个 address/port 的新连接。这工作正常,但是当远程主机不可用时,我得到一个 ConnectException
并完全停止运行。如果发生这种情况,它需要不断重试,直到远程主机可用。
我尝试制作 'upper' 路由 transacted
并且我删除了路由上的任何错误处理程序,这些错误处理程序在套接字上进行实际发送。这适用于 ReadTimeoutException
(远程主机未及时响应)。发生这种情况时,将重新发送消息,直到远程主机响应为止。我需要对 ConnectException
.
我怎样才能做到这一点?
目前不支持。但我们将在下一个版本中添加对此的支持。有关于这个的票