第 26 章 编辑运行的路由

概述

您可以试验对正在运行的路由的更改,而无需更改项目的路由上下文。

要做到这一点:

  • JMX Navigator 视图中,在运行的路由上下文上启用 Edit Routes 选项。

    这会打开一个内存中的 in-memory model of it iwl- Remote CamelContext:<camelContextId&gt; iwl-osgi in the route editor。

  • 在路由编辑器中,对路由上下文的内存中模型进行更改。同时,您可以在相关节点上设置断点,以使用 Camel 调试器及其所有功能。

    您可以编辑内存模型来添加、删除或重新安排节点;要添加或删除现有节点的属性;以及修改现有节点上设置的属性值。您必须保存对内存模型所做的更改以更新正在运行的上下文,并在设置了断点时查看 Debug 透视图的结果。

  • JMX Navigator 视图中,丢弃正在运行的路由上下文的消息,或者等待消息到达计时器、ActiveMQ、文件或其他持续输入节点。
  • Debug 透视图中,评估结果并使用 Camel 调试器深入了解您的路由上下文。

修改正在运行的路由并评估结果

  1. JMX Navigator 视图中,选择包含您要编辑的路由的路由上下文。
  2. 右键单击所选路由上下文以打开上下文菜单,然后选择 Edit Routes

    路由编辑器打开路由上下文的内存中模型 Remote CamelContext:<contextId& gt;,并在上下文中显示所有路由,例如:

    CanvasPalette
    注意

    <contextId > 是项目路由上下文 .xml 文件中的 camelContext 元素的 ID。在本例中,基于 FuseContent Based Router built-in 模板,ID 是 cbr-example-context

  3. 按照 第 2 章 在路由编辑器中编辑路由上下文 所述编辑路由,然后选择 FileSave 以保存您对内存模型所做的更改,并更新正在运行的路由上下文。
  4. 在相关节点上设置断点,如 第 14 章 设置 Breakpoints 所述。
  5. JMX Navigator 视图中,丢弃正在运行的路由上下文输入节点的信息。

    如果您的项目不包括测试信息,您可以创建它们,如 第 23.1 节 “为路由追踪创建测试消息” 所述。

  6. 单击 Yes 以确认切换到 Debug 透视图。
  7. 在 Camel 调试器中,像您通常一样通过断点(请参阅 第 15 章 运行 Camel Debugger)生成消息,以查看您生成的更改的结果。

    Camel 调试器在 Edit Routes 模式中的行为与正常调试模式相同,因此您可以在消息传输路由上下文时使用任何 Camel 调试器的功能。

    注意

    当消息到达路由上下文的末尾时,调试器会被暂停。要继续调试,请切换到 Fuse 集成 视角,并在 JMX Navigator 视图中输入节点上丢弃另一条消息。每次这样做时,工具都会要求您确认切换到 Debug 视角。

    注意

    在路由编辑会话期间,可能会丢失与正在运行的路由上下文的连接。如果发生这种情况,那么在 JMX Navigator 视图中,您会看到如下内容: Local Processesmaven[xxxx][Disconnected]。要继续会话,您必须重新连接到正在运行的路由上下文,在 JMX Navigator 视图中选择它,然后重新选择 Edit Routes

终止路由编辑会话

  1. Debug 透视图的 Debug 视图中,选择 Remote Camel Debug - camelContext--<contextId>--xxxxxxxxxxxxxxxxxx.xml [Remote Camel Context] 线程,然后点菜单栏中的 Terminate button 终止调试会话。
  2. Console 视图的菜单栏中,点 Terminate button 终止路由上下文。
  3. 如果要清除控制台输出,请在 Console 视图的菜单栏中点 clear co
  4. 切换到 Fuse Integration 视角,在路由编辑器中点 Remote CamelContext:<contextId& gt; 标签页来关闭路由上下文文件的内存中模型。 close