camel-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Lauri Kimmel (Confluence)" <conflue...@apache.org>
Subject [CONF] Apache Camel > Metrics Component
Date Wed, 13 Aug 2014 13:29:00 GMT
<html>
    <head>
        <meta name="viewport" content="width=device-width" />
        <base href="https://cwiki.apache.org/confluence" />
        <style type="text/css">
    body, #email-content, #email-content-inner { font-family: Arial,FreeSans,Helvetica,sans-serif; }
    body, p, blockquote, pre, code, td, th, li, dt, dd { font-size: 13px; }
    small { font-size: 11px; }

    body { width:100% !important; -webkit-font-smoothing: antialiased; }

    body,
    #email-wrapper { background-color: #f0f0f0; }
    #email-wrapper-inner { padding: 20px; text-align: center; }
    #email-content-inner { background-color: #fff; border: 1px solid #bbb; color: $menuTxtColour; padding:20px; text-align:left; }
    #email-wrapper-inner > table { width: 100%; }
    #email-wrapper-inner.thin > table { margin: 0 auto; width: 50%; }
    #email-footer { padding: 0 16px 32px 16px; margin: 0; }

    .email-indent { margin: 8px 0 16px 0; }
    .email-comment { margin: 0 0 0 56px; }
    .email-comment.removed { background-color: #ffe7e7; border: 1px solid #df9898; padding: 0 8px;}

    #email-title-avatar { text-align: left; vertical-align: top; width: 48px; padding-right: 8px; }
    #email-title-flavor { margin: 0; padding: 0 0 4px 0; }
    #email-title-heading { font-size: 16px; line-height: 20px; min-height: 20px; margin: 0; padding: 0; }
    #email-title .icon { border: 0; padding: 0 5px 0 0; text-align: left; vertical-align: middle; }

    #email-actions { border-top: 1px solid #bbb; color: #505050; margin: 8px 0 0 0; padding: 0; }
    #email-actions td { padding-top: 8px; }
    #email-actions .left { max-width: 45%; text-align: left; }
    #email-actions .right { text-align: right; }
    .email-reply-divider { border-top: 1px solid #bbb; color: #505050; margin: 32px 0 8px 0; padding: 8px 0; }
    .email-section-title { border-bottom: 1px solid #bbb; margin: 8px 0; padding: 8px 0 0 0; }

    .email-metadata { color: #505050; }

    a { color: #326ca6; text-decoration: none; }
    a:hover { color: #336ca6; text-decoration: underline; }
    a:active {color: #326ca6; }

    a.email-footer-link { color: #505050; font-size: 11px; }

    .email-item-list { list-style: none; margin: 4px 0; padding-left: 0; }
    .email-item-list li { list-style: none; margin: 0; padding: 4px 0; }
    .email-list-divider { color: #505050; padding: 0 0.35em; }
    .email-operation-icon { padding-right: 5px; }

    .avatar { -ms-interpolation-mode: bicubic; border-radius: 3px;}
    .avatar-link { margin: 2px; }

    .tableview th { border-bottom: 1px solid #69C; font-weight: bold; text-align: left; }
    .tableview td { border-bottom: 1px solid #bbbbbb; text-align: left; padding: 4px 16px 4px 0; }

    .aui-message {  margin: 1em 0; padding: 8px; }
    .aui-message.info { background-color: #e0f0ff; border: 1px solid #9eb6d4; }
    .aui-message.success { background-color: #ddfade; border: 1px solid #93c49f; }
    .aui-message.error,
    .aui-message.removed { background-color: #ffe7e7; border: 1px solid #df9898; color: #000; }

    .call-to-action-table { margin: 10px 1px 1px 1px;}
    .call-to-cancel-container, .call-to-action-container { padding: 5px 20px; }
    .call-to-cancel-container { border: 1px solid #aaa; background-color: #eee; border-radius: 3px; }
    .call-to-cancel-container a.call-to-cancel-button { background-color: #eee; font-size: 14px; line-height: 1; padding: 0; margin: 0; color: #666; font-family: sans-serif;}
    .call-to-action-container { border: 1px solid #486582;  background-color: #3068A2; border-radius: 3px; padding: 4px 10px; }
    .call-to-action-container a.call-to-action-button { background-color: #3068A2; font-size: 14px; line-height: 1; padding: 0; margin: 0; color: #fff; font-weight: bold; font-family: sans-serif; }

    /** The span around the inline task checkbox image */
    .diff-inline-task-overlay {
        display: inline-block;
        text-align: center;
        height: 1.5em;
        padding: 5px 0px 1px 5px;
        margin-right: 5px;
        /** Unfortunately, the negative margin-left is stripped out in gmail */
        margin-left: -5px;
    }

            @media handheld, only screen and (max-device-width: 480px) {
        div, a, p, td, th, li, dt, dd { -webkit-text-size-adjust: auto; }
        small, small a { -webkit-text-size-adjust: 90%; }

        td[id=email-wrapper-inner] { padding: 2px !important; }
        td[id=email-content-inner] { padding: 8px !important; }
        td[id="email-wrapper-inner"][class="thin"] > table { text-align: left !important; width: 100% !important; }
        td[id=email-footer] { padding: 8px 12px !important; }
        div[class=email-indent] { margin: 8px 0px !important; }
        div[class=email-comment] { margin: 0 !important; }

        p[id=email-title-flavor] a { display: block; } /* puts the username and the action on separate lines */
        p[id=email-permalink] { padding: 4px 0 0 0 !important; }

        table[id=email-actions] td { padding-top: 0 !important; }
        table[id=email-actions] td.right { text-align: right !important; }
        table[id=email-actions] .email-list-item { display: block; margin: 1em 0 !important; word-wrap: normal !important; }
        span[class=email-list-divider] { display: none; }
    }



        </style>
    </head>
    <body style="font-family: Arial, FreeSans, Helvetica, sans-serif; font-size: 13px; width: 100%; -webkit-font-smoothing: antialiased; background-color: #f0f0f0">
        <table id="email-wrapper" width="100%" cellspacing="0" cellpadding="0" border="0" style="background-color: #f0f0f0">
            <tbody>
                <tr valign="middle">
                    <td id="email-wrapper-inner" style="font-size: 13px; padding: 20px; text-align: center">
                        <table id="email-content" cellspacing="0" cellpadding="0" border="0" style="font-family: Arial, FreeSans, Helvetica, sans-serif; width: 100%">
                            <tbody>
                                <tr valign="top">
                                    <td id="email-content-inner" align="left" style="font-family: Arial, FreeSans, Helvetica, sans-serif; font-size: 13px; background-color: #fff; border: 1px solid #bbb; padding: 20px; text-align: left">
                                        <table id="email-title" cellpadding="0" cellspacing="0" border="0" width="100%">
                                            <tbody>
                                                <tr>
                                                    <td id="email-title-avatar" rowspan="2" style="font-size: 13px; text-align: left; vertical-align: top; width: 48px; padding-right: 8px"> <img class="avatar" src="cid:avatar_cc9c809f09a9827c7e33ef31827f4591" border="0" height="48" width="48" style="-ms-interpolation-mode: bicubic; border-radius: 3px" /> </td>
                                                    <td valign="top" style="font-size: 13px">
                                                        <div id="email-title-flavor" class="email-metadata" style="margin: 0; padding: 0 0 4px 0; color: #505050">
                                                            <a href="    https://cwiki.apache.org/confluence/display/~laurikimmel " style="color:#326ca6;text-decoration:none;; color: #326ca6; text-decoration: none">Lauri Kimmel</a> created a page:
                                                        </div> </td>
                                                </tr>
                                                <tr>
                                                    <td valign="top" style="font-size: 13px"> <h2 id="email-title-heading" style="font-size: 16px; line-height: 20px; min-height: 20px; margin: 0; padding: 0"> <a href="https://cwiki.apache.org/confluence/display/CAMEL/Metrics+Component" style="color: #326ca6; text-decoration: none"> <img class="icon" src="cid:page-icon" alt="" style="border: 0; padding: 0 5px 0 0; text-align: left; vertical-align: middle" /> <strong style="font-size:16px;line-height:20px;vertical-align:top;">Metrics Component</strong> </a> </h2> </td>
                                                </tr>
                                            </tbody>
                                        </table>
                                        <div class="email-indent" style="margin: 8px 0 16px 0">
                                            <div class="email-page">
                                                <h2 id="MetricsComponent-MetricsComponent">Metrics Component</h2>
                                                <p style="font-size: 13px"> <strong>Available as of Camel 2.14</strong> </p>
                                                <p style="font-size: 13px">The&nbsp;<strong>metrics:</strong>&nbsp;component allows you to collect various metrics directly from Camel routes. Supported metric types are&nbsp;<a href="#MetricsComponent-counter" style="color: #326ca6; text-decoration: none">counter</a>,&nbsp;<a href="#MetricsComponent-histogram" style="color: #326ca6; text-decoration: none">histogram</a>, <a href="#MetricsComponent-meter" style="color: #326ca6; text-decoration: none">meter</a>&nbsp;and&nbsp;<a href="#MetricsComponent-timer" style="color: #326ca6; text-decoration: none">timer</a>.&nbsp;<a href="http://metrics.codahale.com/" class="external-link" rel="nofollow" style="color: #326ca6; text-decoration: none">Metrics</a>&nbsp;provides simple way to measure behaviour of your application. Configurable reporting&nbsp;backend&nbsp;is enabling different integration options for collecting and visualizing statistics.</p>
                                                <p style="font-size: 13px">Maven users will need to add the following dependency to their <code style="font-size: 13px">pom.xml</code> for this component:</p>
                                                <div class="code panel pdl" style="border-width: 1px;">
                                                    <div class="codeContent panelContent pdl">
                                                        <pre class="theme: Default; brush: xml; gutter: false" style="font-size:12px;; font-size: 13px">&lt;dependency&gt;
    &lt;groupId&gt;org.apache.camel&lt;/groupId&gt;
    &lt;artifactId&gt;camel-metrics&lt;/artifactId&gt;
    &lt;version&gt;x.x.x&lt;/version&gt;
    &lt;!-- use the same version as your Camel core version --&gt;
&lt;/dependency&gt;</pre>
                                                    </div>
                                                </div>
                                                <h3 id="MetricsComponent-URIformat">URI format</h3>
                                                <div class="code panel pdl" style="border-width: 1px;">
                                                    <div class="codeContent panelContent pdl">
                                                        <pre class="theme: Default; brush: java; gutter: false" style="font-size:12px;; font-size: 13px">metrics:[ meter | counter | histogram | timer ]:metricname[?options]</pre>
                                                    </div>
                                                </div>
                                                <h3 id="MetricsComponent-registryMetricRegistry"> <span class="confluence-anchor-link" id="MetricsComponent-registry"></span><span style="line-height: 1.5625;">Metric Registry</span> </h3>
                                                <p style="font-size: 13px">Camel Metrics Component uses by default <code style="font-size: 13px">MetricRegistry</code> with <code style="font-size: 13px">Slf4jReporter</code> and 60 second reporting interval. Default registry can be replaced with custom one by providing bean with name <code style="font-size: 13px">metricRegistry</code> in Camel registry.&nbsp;<span style="line-height: 1.4285715;">For example using Spring Java Configuration.</span> </p>
                                                <div class="code panel pdl" style="border-width: 1px;">
                                                    <div class="codeContent panelContent pdl">
                                                        <pre class="theme: Default; brush: java; gutter: false" style="font-size:12px;; font-size: 13px">@Configuration
public static class MyConfig extends SingleRouteCamelConfiguration {

    @Bean
    @Override
    public RouteBuilder route() {
        return new RouteBuilder() {
            @Override
            public void configure() throws Exception {
                // define Camel routes here
            }
        };
    }

    @Bean(name = MetricsComponent.METRIC_REGISTRY_NAME)
    public MetricRegistry getMetricRegistry() {
        MetricRegistry registry = ...;
        return registry;
    }
}</pre>
                                                    </div>
                                                </div>
                                                <div class="aui-message problem shadowed information-macro" style="margin: 1em 0; padding: 8px">
                                                    <span class="aui-icon icon-problem">Icon</span>
                                                    <div class="message-content">
                                                        <p style="font-size: 13px"> <code style="font-size: 13px">MetricRegistry</code> uses internal thread(s) for reporting. There is no public API in version 3.0.1 for users to clean up on exit. Thus using Camel Metrics Component leads to Java classloader leak and my cause <code style="font-size: 13px">OutOfMemoryErrors</code> in some cases.</p>
                                                    </div>
                                                </div>
                                                <h3 id="MetricsComponent-Usage">Usage</h3>
                                                <p style="font-size: 13px">Each metric has type and name. Supported types are <a href="#MetricsComponent-counter" style="color: #326ca6; text-decoration: none">counter</a>, <a href="#MetricsComponent-histogram" style="color: #326ca6; text-decoration: none">histogram</a>,&nbsp;<a href="#MetricsComponent-meter" style="color: #326ca6; text-decoration: none">meter</a>&nbsp;and <a href="#MetricsComponent-timer" style="color: #326ca6; text-decoration: none">timer</a>. Metric name is simple string. If metric type is not provided then type meter is used by default.</p>
                                                <h4 id="MetricsComponent-Headers">Headers</h4>
                                                <p style="font-size: 13px">Metric name defined in URI can be overridden by using header with name <code style="font-size: 13px">CamelMetricsName</code>.</p>
                                                <p style="font-size: 13px">For example</p>
                                                <div class="code panel pdl" style="border-width: 1px;">
                                                    <div class="codeContent panelContent pdl">
                                                        <pre class="theme: Default; brush: java; gutter: false" style="font-size:12px;; font-size: 13px">from(&quot;direct:in&quot;)
    .setHeader(MetricsConstants.HEADER_METRIC_NAME, constant(&quot;new.name&quot;))
    .to(&quot;metrics:counter:name.not.used&quot;)
    .to(&quot;direct:out&quot;);</pre>
                                                    </div>
                                                </div>
                                                <p style="font-size: 13px">will update counter with name <code style="font-size: 13px">new.name</code> instead of <code style="font-size: 13px">name.not.used</code>.</p>
                                                <p style="font-size: 13px">All Metrics specific headers are removed from the message once Metrics endpoint finishes processing of exchange. While processing exchange Metrics endpoint will catch all exceptions and write log entry using level <code style="font-size: 13px">warn</code>.</p>
                                                <h3 id="MetricsComponent-counterMetricstypecounter"> <span class="confluence-anchor-link" id="MetricsComponent-counter"></span>Metrics type counter</h3>
                                                <div class="code panel pdl" style="border-width: 1px;">
                                                    <div class="codeContent panelContent pdl">
                                                        <pre class="theme: Default; brush: text; gutter: false" style="font-size:12px;; font-size: 13px">metrics:counter:metricname[?options]</pre>
                                                    </div>
                                                </div>
                                                <h4 id="MetricsComponent-Options"> <span style="line-height: 1.5;">Options</span> </h4>
                                                <div class="table-wrap">
                                                    <table class="confluenceTable" style="border-collapse: collapse; border: 1px solid #ddd;">
                                                        <tbody>
                                                            <tr>
                                                                <th class="confluenceTh" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;background-color: #F0F0F0; font-weight: bold;; font-size: 13px">Name</th>
                                                                <th class="confluenceTh" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;background-color: #F0F0F0; font-weight: bold;; font-size: 13px">Default</th>
                                                                <th class="confluenceTh" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;background-color: #F0F0F0; font-weight: bold;; font-size: 13px">Description</th>
                                                            </tr>
                                                            <tr>
                                                                <td class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px">increment&nbsp;</td>
                                                                <td class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px">-</td>
                                                                <td class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px">Long value to add to the counter</td>
                                                            </tr>
                                                            <tr>
                                                                <td class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px">decrement</td>
                                                                <td class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px">-</td>
                                                                <td class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px">Long value to subtract from the counter</td>
                                                            </tr>
                                                        </tbody>
                                                    </table>
                                                </div>
                                                <p style="font-size: 13px">If neither <code style="font-size: 13px">increment</code> or <code style="font-size: 13px">decrement</code> is defined then counter value will be incremented by one. If <code style="font-size: 13px">increment</code> and <code style="font-size: 13px">decrement</code> are both defined only increment operation is called.<span style="line-height: 1.4285715;">&nbsp;</span> </p>
                                                <div class="code panel pdl" style="border-width: 1px;">
                                                    <div class="codeContent panelContent pdl">
                                                        <pre class="theme: Default; brush: java; gutter: false" style="font-size:12px;; font-size: 13px">// update counter simple.counter by 7
from(&quot;direct:in&quot;)
    .to(&quot;metric:counter:simple.counter?increment=7&quot;)
    .to(&quot;direct:out&quot;);</pre>
                                                    </div>
                                                </div>
                                                <div class="code panel pdl" style="border-width: 1px;">
                                                    <div class="codeContent panelContent pdl">
                                                        <pre class="theme: Default; brush: java; gutter: false" style="font-size:12px;; font-size: 13px">// increment counter simple.counter by 1
from(&quot;direct:in&quot;)
    .to(&quot;metric:counter:simple.counter&quot;)
    .to(&quot;direct:out&quot;);</pre>
                                                    </div>
                                                </div>
                                                <div class="code panel pdl" style="border-width: 1px;">
                                                    <div class="codeContent panelContent pdl">
                                                        <pre class="theme: Default; brush: java; gutter: false" style="font-size:12px;; font-size: 13px">// decrement counter simple.counter by 3
from(&quot;direct:in&quot;)
    .to(&quot;metric:counter:simple.counter?decrement=3&quot;)
    .to(&quot;direct:out&quot;);</pre>
                                                    </div>
                                                </div>
                                                <h4 id="MetricsComponent-Headers.1">Headers</h4>
                                                <p style="font-size: 13px"> <span style="line-height: 1.4285715;">Message headers can be used to override <code style="font-size: 13px">increment</code> and <code style="font-size: 13px">decrement</code> values specified in Metrics component URI.</span> </p>
                                                <div class="table-wrap">
                                                    <table class="confluenceTable" style="border-collapse: collapse; border: 1px solid #ddd;">
                                                        <tbody>
                                                            <tr>
                                                                <th class="confluenceTh" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;background-color: #F0F0F0; font-weight: bold;; font-size: 13px">Name</th>
                                                                <th class="confluenceTh" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;background-color: #F0F0F0; font-weight: bold;; font-size: 13px">Description</th>
                                                                <th class="confluenceTh" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;background-color: #F0F0F0; font-weight: bold;; font-size: 13px">Expected type</th>
                                                            </tr>
                                                            <tr>
                                                                <td class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px">CamelMetricsCounterIncrement&nbsp;</td>
                                                                <td class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px">Override increment value in URI</td>
                                                                <td class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px">Long</td>
                                                            </tr>
                                                            <tr>
                                                                <td class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px">CamelMetricsCounterDecrement&nbsp;</td>
                                                                <td class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px">Override decrement value in URI</td>
                                                                <td class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px">Long</td>
                                                            </tr>
                                                        </tbody>
                                                    </table>
                                                </div>
                                                <div class="code panel pdl" style="border-width: 1px;">
                                                    <div class="codeContent panelContent pdl">
                                                        <pre class="theme: Default; brush: java; gutter: false" style="font-size:12px;; font-size: 13px">// update counter simple.counter by 417
from(&quot;direct:in&quot;)
    .setHeader(MetricsConstants.HEADER_COUNTER_INCREMENT, constant(417L))
    .to(&quot;metric:counter:simple.counter?increment=7&quot;)
    .to(&quot;direct:out&quot;);</pre>
                                                    </div>
                                                </div>
                                                <div class="code panel pdl" style="border-width: 1px;">
                                                    <div class="codeContent panelContent pdl">
                                                        <pre class="theme: Default; brush: java; gutter: false" style="font-size:12px;; font-size: 13px">// updates counter using simple language to evaluate body.length
from(&quot;direct:in&quot;)
    .setHeader(MetricsConstants.HEADER_COUNTER_INCREMENT, simple(&quot;${body.length}&quot;))
    .to(&quot;metrics:counter:body.length&quot;)
    .to(&quot;mock:out&quot;);</pre>
                                                    </div>
                                                </div>
                                                <h3 id="MetricsComponent-histogramMetrictypehistogram"> <span class="confluence-anchor-link" id="MetricsComponent-histogram"></span>Metric type histogram</h3>
                                                <div class="code panel pdl" style="border-width: 1px;">
                                                    <div class="codeContent panelContent pdl">
                                                        <pre class="theme: Default; brush: text; gutter: false" style="font-size:12px;; font-size: 13px">metrics:histogram:metricname[?options]</pre>
                                                    </div>
                                                </div>
                                                <h4 id="MetricsComponent-Options.1">Options</h4>
                                                <div class="table-wrap">
                                                    <table class="confluenceTable" style="border-collapse: collapse; border: 1px solid #ddd;">
                                                        <tbody>
                                                            <tr>
                                                                <th class="confluenceTh" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;background-color: #F0F0F0; font-weight: bold;; font-size: 13px">Name</th>
                                                                <th class="confluenceTh" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;background-color: #F0F0F0; font-weight: bold;; font-size: 13px">Default</th>
                                                                <th class="confluenceTh" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;background-color: #F0F0F0; font-weight: bold;; font-size: 13px">Description</th>
                                                            </tr>
                                                            <tr>
                                                                <td class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px">value</td>
                                                                <td class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px">-</td>
                                                                <td class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px">Value to use in histogram</td>
                                                            </tr>
                                                        </tbody>
                                                    </table>
                                                </div>
                                                <p style="font-size: 13px">If no <code style="font-size: 13px">value</code> is not set nothing is added to histogram and warning is logged.</p>
                                                <div class="code panel pdl" style="border-width: 1px;">
                                                    <div class="codeContent panelContent pdl">
                                                        <pre class="theme: Default; brush: java; gutter: false" style="font-size:12px;; font-size: 13px">// adds value 9923 to simple.histogram
from(&quot;direct:in&quot;)
    .to(&quot;metric:histogram:simple.histogram?value=9923&quot;)
    .to(&quot;direct:out&quot;);</pre>
                                                    </div>
                                                </div>
                                                <div class="code panel pdl" style="border-width: 1px;">
                                                    <div class="codeContent panelContent pdl">
                                                        <pre class="theme: Default; brush: java; gutter: false" style="font-size:12px;; font-size: 13px">// nothing is added to simple.histogram; warning is logged
from(&quot;direct:in&quot;)
    .to(&quot;metric:histogram:simple.histogram&quot;)
    .to(&quot;direct:out&quot;);</pre>
                                                    </div>
                                                </div>
                                                <h4 id="MetricsComponent-Headers.2">Headers</h4>
                                                <p style="font-size: 13px">Message header can be used to override value specified in Metrics component URI.</p>
                                                <div class="table-wrap">
                                                    <table class="confluenceTable" style="border-collapse: collapse; border: 1px solid #ddd;">
                                                        <tbody>
                                                            <tr>
                                                                <th class="confluenceTh" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;background-color: #F0F0F0; font-weight: bold;; font-size: 13px">Name</th>
                                                                <th class="confluenceTh" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;background-color: #F0F0F0; font-weight: bold;; font-size: 13px">Description</th>
                                                                <th class="confluenceTh" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;background-color: #F0F0F0; font-weight: bold;; font-size: 13px">Expected type</th>
                                                            </tr>
                                                            <tr>
                                                                <td class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px">CamelMetricsHistogramValue</td>
                                                                <td class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px">Override histogram value in URI</td>
                                                                <td class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px">Long</td>
                                                            </tr>
                                                        </tbody>
                                                    </table>
                                                </div>
                                                <div class="code panel pdl" style="border-width: 1px;">
                                                    <div class="codeContent panelContent pdl">
                                                        <pre class="theme: Default; brush: java; gutter: false" style="font-size:12px;; font-size: 13px">// adds value 992 to simple.histogram
from(&quot;direct:in&quot;)
    .setHeader(MetricsConstants.HEADER_HISTOGRAM_VALUE, constant(992L))
    .to(&quot;metric:histogram:simple.histogram?value=700&quot;)
    .to(&quot;direct:out&quot;)</pre>
                                                    </div>
                                                </div>
                                                <h3 id="MetricsComponent-meterMetrictypemeter"> <span class="confluence-anchor-link" id="MetricsComponent-meter"></span>Metric type meter</h3>
                                                <div class="code panel pdl" style="border-width: 1px;">
                                                    <div class="codeContent panelContent pdl">
                                                        <pre class="theme: Default; brush: text; gutter: false" style="font-size:12px;; font-size: 13px">metrics:meter:metricname[?options]</pre>
                                                    </div>
                                                </div>
                                                <h4 id="MetricsComponent-Options.2"> <span style="line-height: 1.4285715;">Options</span> </h4>
                                                <div class="table-wrap">
                                                    <table class="confluenceTable" style="border-collapse: collapse; border: 1px solid #ddd;">
                                                        <tbody>
                                                            <tr>
                                                                <th class="confluenceTh" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;background-color: #F0F0F0; font-weight: bold;; font-size: 13px">Name</th>
                                                                <th class="confluenceTh" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;background-color: #F0F0F0; font-weight: bold;; font-size: 13px">Default</th>
                                                                <th class="confluenceTh" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;background-color: #F0F0F0; font-weight: bold;; font-size: 13px">Description</th>
                                                            </tr>
                                                            <tr>
                                                                <td class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px">mark&nbsp;</td>
                                                                <td class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px">-</td>
                                                                <td class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px">Long value to use as mark</td>
                                                            </tr>
                                                        </tbody>
                                                    </table>
                                                </div>
                                                <p style="font-size: 13px"> <span style="line-height: 1.4285715;">If <code style="font-size: 13px">mark</code> is not set then&nbsp;<code style="font-size: 13px">meter.mark()</code> is called without argument.</span> </p>
                                                <div class="code panel pdl" style="border-width: 1px;">
                                                    <div class="codeContent panelContent pdl">
                                                        <pre class="theme: Default; brush: java; gutter: false" style="font-size:12px;; font-size: 13px">// marks simple.meter without value
from(&quot;direct:in&quot;)
    .to(&quot;metric:simple.meter&quot;)
    .to(&quot;direct:out&quot;);</pre>
                                                    </div>
                                                </div>
                                                <div class="code panel pdl" style="border-width: 1px;">
                                                    <div class="codeContent panelContent pdl">
                                                        <pre class="theme: Default; brush: java; gutter: false" style="font-size:12px;; font-size: 13px">// marks simple.meter with value 81
from(&quot;direct:in&quot;)
    .to(&quot;metric:meter:simple.meter?mark=81&quot;)
    .to(&quot;direct:out&quot;);</pre>
                                                    </div>
                                                </div>
                                                <h4 id="MetricsComponent-Headers.3">Headers</h4>
                                                <p style="font-size: 13px">Message header can be used to override <code style="font-size: 13px">mark</code> value specified in Metrics component URI.</p>
                                                <div class="table-wrap">
                                                    <table class="confluenceTable" style="border-collapse: collapse; border: 1px solid #ddd;">
                                                        <tbody>
                                                            <tr>
                                                                <th class="confluenceTh" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;background-color: #F0F0F0; font-weight: bold;; font-size: 13px">Name</th>
                                                                <th class="confluenceTh" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;background-color: #F0F0F0; font-weight: bold;; font-size: 13px">Description</th>
                                                                <th class="confluenceTh" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;background-color: #F0F0F0; font-weight: bold;; font-size: 13px">Expected type</th>
                                                            </tr>
                                                            <tr>
                                                                <td class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px">CamelMetricsMeterMark</td>
                                                                <td class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px">Override mark value in URI</td>
                                                                <td class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px">Long</td>
                                                            </tr>
                                                        </tbody>
                                                    </table>
                                                </div>
                                                <div class="code panel pdl" style="border-width: 1px;">
                                                    <div class="codeContent panelContent pdl">
                                                        <pre class="theme: Default; brush: java; gutter: false" style="font-size:12px;; font-size: 13px">// updates meter simple.meter with value 345
from(&quot;direct:in&quot;)
    .setHeader(MetricsConstants.HEADER_METER_MARK, constant(345L))
    .to(&quot;metric:meter:simple.meter?mark=123&quot;)
    .to(&quot;direct:out&quot;);</pre>
                                                    </div>
                                                </div>
                                                <h3 id="MetricsComponent-timerMetricstypetimer"> <span class="confluence-anchor-link" id="MetricsComponent-timer"></span>Metrics type timer</h3>
                                                <div class="code panel pdl" style="border-width: 1px;">
                                                    <div class="codeContent panelContent pdl">
                                                        <pre class="theme: Default; brush: text; gutter: false" style="font-size:12px;; font-size: 13px">metrics:timer:metricname[?options]</pre>
                                                    </div>
                                                </div>
                                                <h4 id="MetricsComponent-Options.3"> <span style="line-height: 1.4285715;">Options</span> </h4>
                                                <div class="table-wrap">
                                                    <table class="confluenceTable" style="border-collapse: collapse; border: 1px solid #ddd;">
                                                        <tbody>
                                                            <tr>
                                                                <th class="confluenceTh" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;background-color: #F0F0F0; font-weight: bold;; font-size: 13px">Name</th>
                                                                <th class="confluenceTh" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;background-color: #F0F0F0; font-weight: bold;; font-size: 13px">Default</th>
                                                                <th class="confluenceTh" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;background-color: #F0F0F0; font-weight: bold;; font-size: 13px">Description</th>
                                                            </tr>
                                                            <tr>
                                                                <td class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px">action</td>
                                                                <td class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px">-</td>
                                                                <td class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px">start or stop</td>
                                                            </tr>
                                                        </tbody>
                                                    </table>
                                                </div>
                                                <p style="font-size: 13px"> <span style="line-height: 1.4285715;">If no <code style="font-size: 13px">action</code> or invalid value is provided then warning is logged without any timer update. If action <code style="font-size: 13px">start</code> is called on already running timer or <code style="font-size: 13px">stop</code> is called on not running timer then nothing is updated and warning is logged.</span> </p>
                                                <div class="code panel pdl" style="border-width: 1px;">
                                                    <div class="codeContent panelContent pdl">
                                                        <pre class="theme: Default; brush: java; gutter: false" style="font-size:12px;; font-size: 13px">// measure time taken by route &quot;calculate&quot;
from(&quot;direct:in&quot;)
    .to(&quot;metrics:timer:simple.timer?action=start&quot;)
    .to(&quot;direct:calculate&quot;)
    .to(&quot;metrics:timer:simple.timer?action=stop&quot;);</pre>
                                                    </div>
                                                </div>
                                                <p style="font-size: 13px"> <code style="font-size: 13px">TimerContext</code> objects are stored as Exchange properties between different Metrics component calls.</p>
                                                <h4 id="MetricsComponent-Headers.4">Headers</h4>
                                                <p style="font-size: 13px">Message header can be used to override action value specified in Metrics component URI.</p>
                                                <div class="table-wrap">
                                                    <table class="confluenceTable" style="border-collapse: collapse; border: 1px solid #ddd;">
                                                        <tbody>
                                                            <tr>
                                                                <th class="confluenceTh" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;background-color: #F0F0F0; font-weight: bold;; font-size: 13px">Name</th>
                                                                <th class="confluenceTh" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;background-color: #F0F0F0; font-weight: bold;; font-size: 13px">Description</th>
                                                                <th class="confluenceTh" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;background-color: #F0F0F0; font-weight: bold;; font-size: 13px">Expected type</th>
                                                            </tr>
                                                            <tr>
                                                                <td class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px">CamelMetricsTimerAction</td>
                                                                <td class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px">Override timer action in URI</td>
                                                                <td class="confluenceTd" style="border: 1px solid #DDD; padding: 5px 7px; min-width: 0.6em; text-align: left; vertical-align: top;; font-size: 13px"><code style="font-size: 13px">org.apache.camel.component.metrics.timer.TimerEndpoint.TimerAction</code></td>
                                                            </tr>
                                                        </tbody>
                                                    </table>
                                                </div>
                                                <div class="code panel pdl" style="border-width: 1px;">
                                                    <div class="codeContent panelContent pdl">
                                                        <pre class="theme: Default; brush: java; gutter: false" style="font-size:12px;; font-size: 13px">// sets timer action using header
from(&quot;direct:in&quot;)
    .setHeader(MetricsConstants.HEADER_TIMER_ACTION, TimerAction.start)
    .to(&quot;metric:timer:simple.timer&quot;)
    .to(&quot;direct:out&quot;);</pre>
                                                    </div>
                                                </div>
                                            </div>
                                        </div>
                                        <table id="email-actions" class="email-metadata" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-top: 1px solid #bbb; color: #505050; margin: 8px 0 0 0; padding: 0; color: #505050">
                                            <tbody>
                                                <tr>
                                                    <td class="left" valign="top" style="font-size: 13px; padding-top: 8px; max-width: 45%; text-align: left"> <span class="email-list-item"><a href="https://cwiki.apache.org/confluence/display/CAMEL/Metrics+Component" style="color: #326ca6; text-decoration: none">View Online</a> </span> <span class="email-list-divider" style="color: #505050; padding: 0 0.350em">&middot;</span> <span class="email-list-item"><a href="https://cwiki.apache.org/confluence/plugins/likes/like.action?contentId=44994369" style="color: #326ca6; text-decoration: none">Like</a> </span> </td>
                                                    <td class="right" width="50%" valign="top" style="font-size: 13px; padding-top: 8px; text-align: right"> <span class="email-list-item"><a href="https://cwiki.apache.org/confluence/users/removespacenotification.action?spaceKey=CAMEL" style="color: #326ca6; text-decoration: none">Stop watching space</a> </span> <span class="email-list-divider" style="color: #505050; padding: 0 0.350em">&middot;</span> <span class="email-list-item"><a href="https://cwiki.apache.org/confluence/users/editmyemailsettings.action" style="color: #326ca6; text-decoration: none">Manage Notifications</a> </span> </td>
                                                </tr>
                                            </tbody>
                                        </table> </td>
                                </tr>
                            </tbody>
                        </table> </td>
                </tr>
                <tr>
                    <td id="email-footer" align="center" style="font-size: 13px; padding: 0 16px 32px 16px; margin: 0"> <small style="font-size: 11px"> This message was sent by <a class="email-footer-link" style="color:#505050;font-size:11px;text-decoration:none;; color: #326ca6; text-decoration: none; color: #505050; font-size: 11px" href="http://www.atlassian.com/software/confluence">Atlassian Confluence</a> 5.0.3, <a class="email-footer-link" style="color:#505050;font-size:11px;text-decoration:none;; color: #326ca6; text-decoration: none; color: #505050; font-size: 11px" href="http://www.atlassian.com/software/confluence/overview/team-collaboration-software?utm_source=email-footer">Team Collaboration Software</a> </small> </td>
                </tr>
            </tbody>
        </table>
    </body>
</html>
Mime
View raw message