第 8 章 通过路由追踪消息
通过追踪,您可以截获消息,因为它从一个节点路由到另一个节点。您可以通过路由上下文跟踪消息,以查看您可以在什么位置优化并微调路由上下文的性能。本教程介绍了如何通过路由跟踪消息。
目标
在本教程中,您将完成以下任务:
-
在 Fuse Integration 视角中运行
ZooOrderApp
-
在
ZooOrderApp
上启用追踪 -
将消息放到
ZooOrderApp
中,并通过所有路由节点跟踪它们
先决条件
要启动本教程,您需要从以下之一生成的 ZooOrderApp 项目:
完成 第 6 章 在路由上下文中添加另一个路由 教程。
or
-
完成 第 2 章 设置您的环境 教程,并将项目的
blueprint.xml
文件替换为提供的blueprintContexts/blueprint3.xml
文件,如 “关于资源文件”一节 所述。
设置 Fuse 集成视角
要设置工作区以方便消息追踪:
点工具栏右侧的
按钮,然后从列表中选择 Fuse Integration :
Fuse Integration 视角在默认布局中打开:
将 JMX Navigator 选项卡拖到 Terminal 选项卡的最右侧,并将其保存在:
此安排为 Diagram View 提供了更多空间,以便以图形方式显示路由上下文的节点,这样您可以更轻松地跟踪消息在遍历路由上下文中的路径。
注意为了轻松访问路由上下文
.xml
文件,特别是项目包含多个上下文时,工具会在 Project Explorer 的Camel Contexts
文件夹下列出它们。此外,路由上下文中的所有路由都直接显示为图标,在其上下文文件条目下直接显示。要在 canvas 上的路由上下文中显示单个路由,请在 Project Explorer 中双击其图标。要显示路由上下文中的所有路由,请双击上下文文件条目。
启动消息追踪
在 ZooOrderApp
项目中启动消息追踪:
-
在 Project Explorer 中,展开
ZooOrderApp
项目,以公开src/main/resources/OSGI-INF/blueprint/blueprint.xml
。 -
右键单击
src/main/resources/OSGI-INF/blueprint/blueprint.xml
以打开上下文菜单。 选择 Run As
Local Camel Context (没有测试)。 注意如果选择 Local Camel Context,则工具将恢复到无需测试的情况下运行,因为您尚未为
ZooOrderApp
项目创建了 JUnit 测试。稍后您将在 第 9 章 使用 JUnit 测试路由 中执行此操作。在 JMX 导航器 中,展开
Local process
。-
右键单击
maven [ID]
节点,然后选择 Connect。 扩展路由的元素:
右键点击
Routes
节点,然后选择 Start Tracing :该工具在 图表 View 中显示路由上下文的图形表示:
要查看所有消息流路径,您可能需要通过拖动节点以在 Diagram View 选项卡中重新安排节点。您可能还需要调整 Red Hat CodeReady Studio 中其他视图和标签页的大小,以允许 Diagram View 选项卡扩展。
丢弃正在运行的 ZooOrderApp 项目的消息
在运行的 ZooOrderApp 项目中丢弃消息:
在 Project Explorer 中,展开
ZooOrderApp/src/data
,以便您可以访问消息文件(message1.xml
到message6.xml
):Drag
message1.xml
并将它放到 JMX Navigator 中的_context1>Endpoints>file>src/data?noop=true
节点上:当消息遍历路由时,工具会跟踪并记录每个步骤的 passage。
配置消息视图
您必须刷新 Messages View,然后才能显示消息 trace。如果您希望它们在所有消息跟踪中保留,则需要在 Messages View 中配置列。
- 打开 Messages View。
-
点击面板菜单栏中的
(Refresh 按钮),为视图填充
message1.xml
的消息 trace。 点面板菜单栏中的
图标,然后选择 Configure Columns 以打开 Configure Columns 向导:
注意请注意,在路由上下文中为消息设置的消息标头 Destination 会出现在列表中。
您可以选择或取消选择 Messages View,从 Messages View 中包含或排除项目。您可以重新安排在 Messages View 中显示的列顺序,通过突出显示各个项目、选定项目并在列表中移动它们。
在 Configure Columns 向导中,选择并按顺序排序列:
这些列及其顺序将在 Messages View 中保留,直到您再次更改它们。
您可以在所有工具的表中控制列式布局。使用拖动方法临时重新排列表格格式。例如,拖动列的边框规则以扩展或合同其宽度。要隐藏列,请全额合同其边框。拖动列标题以在表中重新定位列。要保留您的安排,您必须使用 View
逐步浏览消息跟踪
逐步浏览消息跟踪:
-
拖动
message2.xml
并将其丢弃在 JMX Navigator 中的_context1>Endpoints>file>src/data?noop=true
节点上。 - 从 Console 切换到 Messages View。
在 Messages View 中,点
(Refresh 按钮)使用
message2.xml
消息跟踪填充视图。每次在 JMX Navigator 中丢弃消息时,您需要刷新 Messages View,以使用消息 trace 填充它。
点消息 trace 之一在 Properties 视图中查看它的详情:
工具在 Properties 视图的前半部分显示消息追踪(包括消息标头)的详细信息,以及 Properties 视图底部的消息实例的内容。因此,如果应用程序在路由中的任何步骤中设置标头,您可以检查 Message Details 以查看它们是否按预期设置。
您可以通过突出显示每个消息实例来逐步浏览消息实例,以了解特定消息如何遍历路由,并在路由中的每个步骤中按预期处理。
打开 图表 View,查看 路由中的关联步骤是否已突出显示:
工具在 Diagram View 中提取路由,标记路径退出具有计时和性能指标(以毫秒为单位)的处理步骤。图中仅显示指标 总交换。
将鼠标指针悬停在显示的指标上,以显示有关消息流的额外指标:
- 平均处理消息所需时间
- 处理消息所花费的最长时间
- 处理消息的最短时间
另外,您还可以将
ZooOrderApp/src/data/
中剩余的信息拖放到_context1>Endpoints>file>src/data?noop=true
节点(只要启用了追踪)。在每个随后的 drop 中,点
(Refresh 按钮)为 Messages View 填充新消息 trace。
完成后:
-
在 JMX Navigator 中,右键单击
_context1
,然后选择 Stop Tracing Context。 -
打开控制台 并点击面板右上角的
按钮停止控制台。然后点击
按钮来清除控制台输出。
-
在 JMX Navigator 中,右键单击
后续步骤
在 第 9 章 使用 JUnit 测试路由 教程中,您要为项目创建一个 JUnit 测试案例,并以 Local Camel Context
运行您的项目。