当前位置: 首页 > 知识库问答 >
问题:

Apache Camel中的动态路由器URI

郝杰
2023-03-14

我将学习《骆驼行动》一书的第8章,并使用动态路由器进行测试。我定义了以下两条路线:

from("direct:start")
.dynamicRouter(method(DynamicRouterBean.class, "route"))
.log("dynamicRoute result = ${body}");

from("seda:a")
.log("In direct:a with message ${body}");

在DynamicRouterBean的路由方法中,我实现了如下路由逻辑:

public String route(String body, @Header(Exchange.SLIP_ENDPOINT) String previous) {
    System.out.println("Enter DynamicRouterBean, body=" + body + ", previous=" + previous);
    if (previous == null) {
        return "seda://a";
    } else if ("seda://a".equals(previous)) {
        return "language://simple:Bye ${body}";
    } else {
        // no more, so return null to indicate end of dynamic router
        return null;
    }
}

代码按照书中描述的那样工作。。。但我认识到的问题是,如果我在路由方法中间返回endpointURI而没有双斜杠“//”,则检查前一个等于“SEDA:A”的第二个条件将失败,因此动态路由将在那里停止。

if (previous == null) {
        return "seda:a";
    } else if ("seda:a".equals(previous)) {
        // This condition will not match... and it will return null
        return "language:simple:Bye ${body}";
    } else {
        // no more, so return null to indicate end of dynamic router
        return null;
    }

Camel的DynamicRter需要在URI中间添加“//”吗?我在书或骆驼官网链接中搜索,但似乎没有提到这一点...如果是,这背后有什么原因吗?

共有1个答案

鄂育
2023-03-14

是的,Camel中的endpoint被格式化为name://Context-path?选项(例如,带有双斜杠)。因此,如果您将其与书中的进行比较。

 类似资料:
  • 我一直在尝试模块化我的React.js应用程序(它将作为带有Electron的桌面应用程序提供),如果我将来制作一个新模块,我只需添加一个新文件夹和修改几个文件,它就可以很好地集成。我最初受到这篇文章的启发:https://www.nylas.com/blog/react-plugins/ 在那之后,我开始尽可能多地研究,并最终创建了一个JSON文件,该文件将保存在服务器中,其中包含为特定客户机注

  • 问题内容: 我正在建立一个带有角度UI路由器的静态HTML网站进行导航。我基本上有一个带有多个(10+)html模板(页面)的ui视图,可以加载到该视图中。我所有的模板页面都位于名为“页面”的目录中。 所以我基本上想知道我们是否可以在$ stateProvider中仅定义一个状态来动态分配多个模板url,而不是为每个HTML模板页面编写不同的状态(如下所述)。 任何帮助深表感谢。 问题答案: 那应

  • 问题内容: 我目前有一个内置路由的AngularJS应用程序。它可以正常工作,并且一切正常。 我的app.js文件如下所示: 我的应用程序内置了CMS,您可以在其中复制 / pages 目录中的新html文件并添加新的html文件。 即使对于新动态添加的文件,我仍然希望通过路由提供程序。 在理想的情况下,路由模式为: $ routeProvider.when(’/ pagename ‘,{temp

  • 本文向大家介绍静态路由和动态路由之间的区别,包括了静态路由和动态路由之间的区别的使用技巧和注意事项,需要的朋友参考一下 静态路由 遵循用户定义的路由的静态路由或非自适应路由,并且直到网络管理员更改路由表后,路由表才会更改。静态路由使用简单的路由算法,并且比动态路由提供更高的安全性。 动态路由 顾名思义,动态路由或自适应路由会在网络发生任何更改或网络拓扑发生更改时更改路由表。在网络更改期间,动态路由

  • 我正在尝试这样的东西 但是,当没有子路由的路由可以完美工作时,这段代码不起作用 我如何解决第一段代码?