Chapter 8. Tracing a message through a route
Tracing allows you to intercept a message as it is routed from one node to another. You can trace messages through your routing context to see where you can optimize and fine tune your routing context’s performance. This tutorial shows you how to trace a message through a route.
In this tutorial you complete the following tasks:
ZooOrderAppin the Fuse Integration perspective
Enable tracing on the
Drop messages onto the
ZooOrderAppand track them through all route nodes
To start this tutorial, you need the ZooOrderApp project resulting from one of the following:
Complete the Chapter 6, Adding another route to the routing context tutorial.
Complete the Chapter 2, Setting up your environment tutorial and replace your project’s
blueprint.xmlfile with the provided
blueprintContexts/blueprint3.xmlfile, as described in the section called “About the resource files”.
Setting up your Fuse Integration perspective
To set up your workspace to facilitate message tracing:
Click the button on the right side of the tool bar, and then select Fuse Integration from the list:
The Fuse Integration perspective opens in the default layout:
Drag the JMX Navigator tab to the far right of the Terminal tab and drop it there:
This arrangement provides more space for Diagram View to display the routing context’s nodes graphically, which makes it easier for you to visually trace the path that messages take in traversing the routing context.Note
To make it easy to access a routing context
.xmlfile, especially when a project consists of multiple contexts, the tooling lists them under the
Camel Contextsfolder in Project Explorer.
Additionally, all routes in a routing context are displayed as icons directly under their context file entry. To display a single route in the routing context on the canvas, double-click its icon in Project Explorer. To display all routes in the routing context, double-click the context file entry.
Starting message tracing
To start message tracing on the
In Project Explorer, expand the
ZooOrderAppproject to expose
src/main/resources/OSGI-INF/blueprint/blueprint.xmlto open the context menu.
Select Run As → Local Camel Context (without tests).Note
If you select Local Camel Context, the tooling reverts to running without tests because you have not yet created a JUnit test for the
ZooOrderAppproject. You will do that later in Chapter 9, Testing a route with JUnit.
In JMX Navigator, expand
maven [ID]node and then select Connect.
Expand the elements of your route:
Routesnode and then select Start Tracing:
The tooling displays a graphical representation of your routing context in Diagram View:
To see all message flow paths clearly, you probably need to rearrange the nodes by dragging them to fit neatly in the Diagram View tab. You may also need to adjust the size of the other views and tabs in Red Hat JBoss Developer Studio to allow the Diagram View tab to expand.
Dropping messages on the running ZooOrderApp project
To drop messages on the running ZooOrderApp project:
In Project Explorer, expand
ZooOrderApp/src/data, so that you can access the message files (
message1.xmland drop it on the
_context1>Endpoints>file>src/data?noop=truenode in JMX Navigator:
As the message traverses the route, the tooling traces and records its passage at each step.
Configuring Messages View
You must refresh the Messages View before it will display message traces. You also need to configure the columns in Messages View if you want them to persist across all message traces.
- Open the Messages View.
(Refresh button) on top, right of the panel’s menu bar to populate the view with
message1.xml's message traces.
Click the icon on the panel’s menu bar, and select Configure Columns to open the Configure Columns wizard:Note
Notice that the message header, Destination, which you set for the messages in your routing context, appears in the list.
You can include or exclude items from Messages View by selecting or deselecting them. You can rearrange the columnar order in which items appear in Messages View by highlighting individual, selected items and moving them up or down in the list.
In the Configure Columns wizard, select and order the columns this way:
These columns and their order will persist in Messages View until you change them again.
You can control columnar layout in all of the tooling’s tables. Use the drag method to temporarily rearrange tabular format. For example, drag a column’s border rule to expand or contract its width. To hide a column, totally contract its borders. Drag the column header to relocate a column within the table. For your arrangement to persist, you must use the View → Configure Columns method instead.
Stepping through message traces
To step through the message traces:
message2.xmland drop it on the
_context1>Endpoints>file>src/data?noop=truenode in JMX Navigator.
- Switch from Console to Messages View.
In Messages View, click the (Refresh button) to populate the view with
Each time you drop a message on in JMX Navigator, you need to refresh Messages View to populate it with the message traces.
Click one of the message traces to see more details about it in Properties view:
The tooling displays the details about a message trace (including message headers when they are set) in the top half of the Properties view and the contents of the message instance in the bottom half of the Properties view. So, if your application sets headers at any step within a route, you can check the Message Details to see whether they were set as expected.
You can step through the message instances by highlighting each one to see how a particular message traversed the route and whether it was processed as expected at each step in the route.
Open Diagram View, to see that the associated step in the route is highlighted:
The tooling draws the route in Diagram View, tagging paths exiting a processing step with timing and performance metrics (in milliseconds). Only the metric Total exchanges is displayed in the diagram.
Hover the mouse pointer over the displayed metrics to reveal additional metrics about message flow:
- Mean time the step took to process a message
- Maximum time the step took to process a message
- Minimum time the step took to process a message
Optionally, you can drag and drop the remaining messages in
_context1>Endpoints>file>src/data?noop=truenode in JMX Navigator at any time, as long as tracing remains enabled.
On each subsequent drop, remember to click the (Refresh button) to populate Messages View with the new message traces.
In JMX Navigator, right-click
_context1and select Stop Tracing Context.
- Open the Console and click the button in the upper right of the panel to stop the Console. Then click the button to clear console output.
- In JMX Navigator, right-click
In the Chapter 9, Testing a route with JUnit tutorial, you create a JUnit test case for your project and run your project as a
Local Camel Context.