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