Apache Camel - 在使用带有重叠前缀的matchOnUriPrefix时选择最长的匹配前缀

时间:2017-12-12 10:11:55

标签: routes apache-camel

使用驼峰和动态创建的路线,我希望拥有多条特定路线和一条与其他所有路线相匹配的全能路线。

例如:

Catch-all route:
"jetty:0.0.0.0:8080/myservice?matchOnUriPrefix=true" -> general response

Specific routes (created dynamically later)
"jetty:0.0.0.0:8080/myservice/route1?matchOnUriPrefix=true" -> response for route 1
"jetty:0.0.0.0:8080/myservice/route2?matchOnUriPrefix=true" -> response for route 2

问题:

如果在上面的示例中创建路线,则Camel不保证将选择哪条路线例如 for request / myservice / route1 - 它可以是' route1&# 39;或者' catch-all'在集合中首先找到的那个(无序)。根据路线名称,它将要求全部或特定路线。

有没有办法迫使Camel先找到更具体(更长)的路线?

  • 路由是动态添加的,所以我不能使用from(catchAllUrl).choice(),因为我不知道前面的条件
  • 有一种方法可以在catch-all中手动解析URL并重定向到正确的路由,但是我想使用" Camel方式"如果它存在。
  • 除了' myservice'之外,可能还有其他路线。所以我不想在onError中全局处理它为404(如果它甚至可能)

0 个答案:

没有答案