我的代码使用jms队列并通过lb重定向到外部http客户端。 我需要将每个失败的传递的原始邮件记录到本地目录。 问题是每次故障转移都会捕获onException。 有什么方法可以实现这个目标吗?
伪代码:
onException(Exception.class).useOriginalMessage()
.setHeader(...)
.to("file...")
.setHeader(...)
.to("file...")
from("activemq...")
.process(...)
.loadBalance().failover(...)
.to("lb-route1")
.to("lb-route2")
.end()
.process()
.to("file...")
from("lb-route1")
.recipientList("dynamic url")
.end()
from("lb-route2")
.recipientList("dynamic url")
.end()
答案 0 :(得分:0)
我没有用多个to语句测试这个逻辑,但是当我在数组中有我的端点列表时,这个逻辑功能就好了。我将尝试传递到第一个端点,如果我不能,我将尝试将其传递到第二个端点。如果在第二个端点发生异常,它将传播回路由的错误处理程序。如果您需要循环,请将故障转移语句上的最后一个false更改为true。
String[] endpointList = {"direct:end1", "direct:end2"};
from("direct:start")
.loadbalance().failover(endpointList.length-1, false, false)
.to(endpointList);