Thanks for the responses.  I agree that this isn't really something to
expect from a message server.  At first I was looking at the metrics
component but it didn't quite match our requirements (e.g. the counter
doesn't persist on restarts afaik).  Unfortunately we have a number of
constraints about how and where we are running and we are limited in our
choices; splunk would have been great but isn't an option.  I haven't
worked with statsd before but I am looking at it now and it looks to be
perfect.  I am going to give that a try.

On Thu, Jan 25, 2018 at 3:43 PM, Doug Douglass <douglass.d...@gmail.com>
wrote:

> Similar to Quinn's response, but instead of splunk, we stood up a statsd +
> graphite server (pretty quick via docker). We're using Spring Boot, so it
> was natural to use its metric support with a statsd client to push metrics
> to the server over UDP -- very, very little impact to app performance.
>
> Note that we made metrics collection part of the design of our system from
> the start as we were integrating across many SaaS and on-prem commercial
> apps via web services and needed to identify bottlenecks caused by each
> service call. We collect metrics mostly from our own code that's called
> from Camel routes (i.e beans and processors) vs. using Camel's metric
> component[1]. I never quite figured out how to get the two to work together
> (i.e. metric component pushing to statsd) but I didn't spend too much time
> trying :/
>
> Bottom line: your messaging server wasn't designed to keep track of metrics
> beyond it's own operations. There are many systems better suited to the
> task, though all come with some additional overhead (setup, maintenance,
> client code, etc.) Have a look at the metric component[1] as it might
> provide all that you need for now.
>
> [1] http://camel.apache.org/metrics-component.html
>
> On Thu, Jan 25, 2018 at 2:28 PM, Quinn Stevenson <
> qu...@pronoia-solutions.com> wrote:
>
> > We do this by posting an auditing message to Splunk over HTTP.  By doing
> > that, we can not only get counts over a particular timeframe, but we can
> > derive message rates as well.
> >
> >
> > > On Jan 25, 2018, at 2:56 PM, Olivier Eymere <oeym...@gmail.com> wrote:
> > >
> > > I am looking for a way to keep running counts of all of the processed
> > > messages.  The last part of the camel application is a route that posts
> > the
> > > message to a web service, we need to keep counts of the various
> responses
> > > so that when the entire process is complete and the application is
> > exiting
> > > it will log the number of successful submissions and the numbers of
> > > unsuccessful submissions by the error type.  So for example we have
> > > something like this:
> > >
> > > Success: 12345678
> > > Error A: 2345
> > > Error B: 3456
> > > ...
> > >
> > > One idea was to send an empty message to a counter topic based on the
> > > respose.  e.g. COUNTER.SUCCESS, COUNTER.ERRA, COUNTER.ERRB, etc.  Then
> on
> > > exit I can use the enqueue count as the counter.  I don't know if
> that's
> > > the best idea but it worked with one problem.  The problem is that if
> the
> > > application is killed or has some sort of serious problems such as a
> full
> > > disk or we run out of memory, all of which have happened while testing,
> > the
> > > counts are completely lost.
> > >
> > > I could do the same thing with queues instead of topics and use the
> queue
> > > size for the count but I would have to persist the messages.  It would
> > work
> > > but with additional overhead and I/O for persisting essentially
> > nothing.  I
> > > could just log the response results and count later but that does not
> > seem
> > > much better than using persistent queues.
> > >
> > > Is there some way that people are using to keep a running count of
> > various
> > > message processing results that can reliably survive an application
> > restart?
> >
> >
>

Reply via email to