I have recently migrated to Camel 3.0 (using Spring Boot) and found that
there was a change in behavior for our metrics which drives some dashboards
which shows the number of requests in our primary "process" exchange. The
old code performed a prometheus query which counted the sum of  an earlier
stage's CamelMessageHistory_seconds_count and compared it to the count of
the same metric of the primary "process" stage. Camel 2.x seemed to only
increment the count upon exit of the stage while Camel 3.x seems to
increment the count upon starting the stage. This nuance throws off our
timing graphing and we can't simply choose the "next" component in the
chain because there is global exception handling that might be triggered
from the process which wouldn't allow us to watch a single component "next
in line".

Taking a step back, I would like to find out what the best way to get a
simple count of "in flight" count into Micrometer/Prometheus. Ideally Camel
would provide this functionality natively and would allow me to filter on
the nodeId of the process I'm interested in, but that metric doesn't seem
to be exposed (though it seems to be exposed for other metrics components
<https://issues.apache.org/jira/browse/CAMEL-13977>). I also tried to do:

> .doTry()
>     .toF("micrometer:counter:%s", INFLIGHT_METRIC_NAME)
>     .process(handler)
>     .doFinally()
>         .toF("micrometer:counter:%s?decrement=1", INFLIGHT_METRIC_NAME)
>     .end()
>

But with that configuration my global exception handling breaks for the
`process(handler)` code. Does anyone have suggestions as to how to
accomplish this or if Camel should natively support this use-case?

Thanks,

-Steve

Reply via email to