我有两个独立的路由。两个路由基本上是相同的。不同的是源文件夹和目标文件夹。如果发生错误,两个路由都会抛出相同的异常。这是我在onException块中捕获的。在这里,我想根据实际的路由将文件写入一个文件夹。所以我想构建一个选择()....when(...)基于routeId。问题是,我怎样才能让routeId使用它来表示when。下面显示了一些代码,我认为它是如何工作的。但事实并非如此。也许有人有一个想法。
onException(SomeValidationException.class)
.handled(true)
.useOriginalMessage()
.choice()
.when(exchangeProperty("routeId").convertToString().isEqualTo("Route1"))
.to("file:data/error/Route1")
.when(exchangeProperty("routeId").convertToString().isEqualTo("Route2"))
.to("file:data/error/Route2")
.otherwise()
.log(LoggingLevel.ERROR, "I always get here")
.end();
from("file:data/in/Route1")
.routeId("Route1")
.routePolicy(getRoutingPolicy())
.to("direct:RouteWhichWillThrowException")
.to("file:data/out/Route1");
from("file:data/in/Route2")
.routeId("Route2")
.routePolicy(getRoutingPolicy())
.to("direct:RouteWhichWillThrowException")
.to("file:data/out/Route2");
1条答案
按热度按时间r1wp621o1#
我认为您的用例实际上最好使用一个路由错误处理程序,如下所示:
然而,虽然这在重用方面是可行的,但如果您的实现除了inputURI、outputURI和errorURI之外总是相同的话,那就太糟糕了。我建议创建一个模板路由,然后创建它的新示例。