如何配置具有以下要求的路由器:我正在使用 Java DSL
任何示例代码块都会在这里提供很大的帮助。 我正在使用 Springboot 和 Apache Camel
如果我很好地理解您的要求,您希望您的
resequencer
将交换定向到某个Processor
,但如果发生异常,您希望将消息传递到不同的端点。
如果不确切知道您的需求是什么,就很难给您提供代码示例。例如。
rest of the messages
的定义是什么?您指的是整批还是只是聚合批次?
无论如何,解决这个问题的方法是相同的,但根据您的具体需求会有不同的风格。您可以实现一个单例来存储要走的路径,通常是
direct:default
,但是当发生不好的事情时,将路径切换到direct:error
。在 resequencer
的出口处,您有一个处理器,它将根据单例中存储的当前路径路由消息。枚举是一种很好的单例实现,因此这是一种方法:
public Enum Destination {
PATH;
@Getter
private String value = "direct:default";
public void switchToError() {
value = "direct:error";
}
public void switchToDefault() {
value = "direct:default";
}
}
所以,在你的主要路线中你将会有这样的东西:
resequence(body()).batch()
.process(exchange -> exchange.getIn().setHeader("next", Destination.PATH.getValue()))
.routingSlip(header("next"));
并且您在错误处理部分中将路径设置为
direct:error
:
onException(Exception.class)
.process(exchange -> Destination.PATH.switchToError())
.handled(true)
.to("direct:error");
希望有帮助。