第 26 章 编辑运行的路由
概述
您可以试验对正在运行的路由的更改,而无需更改项目的路由上下文。
要做到这一点:
在 JMX Navigator 视图中,在运行的路由上下文上启用 Edit Routes 选项。
这会打开一个内存中的 in-memory model of it iwl- Remote CamelContext:<camelContextId> iwl-osgi in the route editor。
在路由编辑器中,对路由上下文的内存中模型进行更改。同时,您可以在相关节点上设置断点,以使用 Camel 调试器及其所有功能。
您可以编辑内存模型来添加、删除或重新安排节点;要添加或删除现有节点的属性;以及修改现有节点上设置的属性值。您必须保存对内存模型所做的更改以更新正在运行的上下文,并在设置了断点时查看 Debug 透视图的结果。
- 在 JMX Navigator 视图中,丢弃正在运行的路由上下文的消息,或者等待消息到达计时器、ActiveMQ、文件或其他持续输入节点。
- 在 Debug 透视图中,评估结果并使用 Camel 调试器深入了解您的路由上下文。
修改正在运行的路由并评估结果
- 在 JMX Navigator 视图中,选择包含您要编辑的路由的路由上下文。
右键单击所选路由上下文以打开上下文菜单,然后选择 Edit Routes。
路由编辑器打开路由上下文的内存中模型 Remote CamelContext:<contextId& gt;,并在上下文中显示所有路由,例如:
注意<contextId
> 是项目路由上下文 .xml
文件中的camelContext
元素的 ID。在本例中,基于 FuseContent Based Router built-in 模板,ID 是 cbr-example-context
。-
按照 第 2 章 在路由编辑器中编辑路由上下文 所述编辑路由,然后选择 File
Save 以保存您对内存模型所做的更改,并更新正在运行的路由上下文。 - 在相关节点上设置断点,如 第 14 章 设置 Breakpoints 所述。
在 JMX Navigator 视图中,丢弃正在运行的路由上下文输入节点的信息。
如果您的项目不包括测试信息,您可以创建它们,如 第 23.1 节 “为路由追踪创建测试消息” 所述。
- 单击 Yes 以确认切换到 Debug 透视图。
在 Camel 调试器中,像您通常一样通过断点(请参阅 第 15 章 运行 Camel Debugger)生成消息,以查看您生成的更改的结果。
Camel 调试器在 Edit Routes 模式中的行为与正常调试模式相同,因此您可以在消息传输路由上下文时使用任何 Camel 调试器的功能。
注意当消息到达路由上下文的末尾时,调试器会被暂停。要继续调试,请切换到 Fuse 集成 视角,并在 JMX Navigator 视图中输入节点上丢弃另一条消息。每次这样做时,工具都会要求您确认切换到 Debug 视角。
注意在路由编辑会话期间,可能会丢失与正在运行的路由上下文的连接。如果发生这种情况,那么在 JMX Navigator 视图中,您会看到如下内容: Local Processes
maven[xxxx][Disconnected]。要继续会话,您必须重新连接到正在运行的路由上下文,在 JMX Navigator 视图中选择它,然后重新选择 Edit Routes。
终止路由编辑会话
- 在 Debug 透视图的 Debug 视图中,选择 Remote Camel Debug - camelContext--<contextId>--xxxxxxxxxxxxxxxxxx.xml [Remote Camel Context] 线程,然后点菜单栏中的 终止调试会话。
- 在 Console 视图的菜单栏中,点 终止路由上下文。
- 如果要清除控制台输出,请在 Console 视图的菜单栏中点 。
- 切换到 Fuse Integration 视角,在路由编辑器中点 Remote CamelContext:<contextId& gt; 标签页来关闭路由上下文文件的内存中模型。