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