| == Metrics Example - CDI |
| |
| === Introduction |
| |
| This example illustrates the integration between Camel, Dropwizard |
| Metrics and CDI. |
| |
| The example emulates an unreliable service that processes a continuous |
| stream of events. The unreliable service fails randomly and metrics get |
| collected to report the number of generated events as well as the total |
| number of attempted, redelivered, failed and successful calls to the |
| service. A SLF4J reporter is configured so that these metrics details |
| get logged every 10 seconds in the console. |
| |
| The example is implemented in Java with CDI dependency injection. It |
| uses JBoss Weld as the minimal CDI container to run the application, |
| though you can run the application in any CDI compliant container. |
| |
| The `+camel-cdi+` and `+camel-metrics+` components are used in this |
| example. The `+camel-test-cdi+` module is used for the JUnit test |
| runner. Besides, the Metrics CDI extension is used so that metrics can |
| be injected and custom metrics registered via CDI. For instance, a ratio |
| gauge is registered to monitor the success rate, that is the ratio of |
| success calls on the number of generated events. |
| |
| === Build |
| |
| You can build this example using: |
| |
| [source,sh] |
| ---- |
| $ mvn package |
| ---- |
| |
| === Run |
| |
| You can run this example using: |
| |
| [source,sh] |
| ---- |
| $ mvn camel:run |
| ---- |
| |
| When the Camel application runs, you should see the calls to the |
| `unreliable-service' being logged to the console, e.g.: |
| |
| .... |
| 2016-01-18 15:19:04,390 [ timer://stream] INFO unreliable-service - Processing event #8... |
| 2016-01-18 15:19:06,399 [ timer://stream] ERROR unreliable-service - Failed processing event #8 |
| 2016-01-18 15:19:06,400 [ timer://stream] INFO unreliable-service - Processing event #9... |
| 2016-01-18 15:19:08,410 [ timer://stream] ERROR unreliable-service - Failed processing event #9 |
| 2016-01-18 15:19:08,411 [ timer://stream] INFO unreliable-service - Processing event #10... |
| 2016-01-18 15:19:08,412 [ timer://stream] INFO unreliable-service - Successfully processed event #10 |
| 2016-01-18 15:19:09,415 [ timer://stream] INFO unreliable-service - Processing event #11... |
| 2016-01-18 15:19:09,416 [ timer://stream] INFO unreliable-service - Successfully processed event #11 |
| 2016-01-18 15:19:10,420 [ timer://stream] INFO unreliable-service - Processing event #12... |
| 2016-01-18 15:19:10,421 [ timer://stream] INFO unreliable-service - Successfully processed event #12 |
| 2016-01-18 15:19:11,424 [ timer://stream] INFO unreliable-service - Processing event #13... |
| 2016-01-18 15:19:12,428 [ timer://stream] WARN unreliable-service - Processed event #13 after 1 retries |
| 2016-01-18 15:19:12,430 [ timer://stream] INFO unreliable-service - Successfully processed event #13 |
| .... |
| |
| And every 10 seconds, the metrics report, e.g.: |
| |
| .... |
| 2016-01-18 15:19:14,360 [rter-1-thread-1] INFO metrics - type=GAUGE, name=success-ratio, value=0.9314661799835947 |
| 2016-01-18 15:19:14,361 [rter-1-thread-1] INFO metrics - type=METER, name=attempt, count=26, mean_rate=1.3682531895692165, m1=1.245416192969619, m5=1.209807850571521, m15=1.2033118138834105, rate_unit=events/second |
| 2016-01-18 15:19:14,361 [rter-1-thread-1] INFO metrics - type=METER, name=error, count=2, mean_rate=0.25121358141009453, m1=0.4, m5=0.4, m15=0.4, rate_unit=events/second |
| 2016-01-18 15:19:14,361 [rter-1-thread-1] INFO metrics - type=METER, name=generated, count=15, mean_rate=0.7210025396112787, m1=0.6455184225121126, m5=0.6098087536676114, m15=0.6033118478925024, rate_unit=events/second |
| 2016-01-18 15:19:14,361 [rter-1-thread-1] INFO metrics - type=METER, name=redelivery, count=11, mean_rate=0.6872842357052532, m1=0.9385926899562456, m5=0.9868864401928024, m15=0.995580155717569, rate_unit=events/second |
| 2016-01-18 15:19:14,361 [rter-1-thread-1] INFO metrics - type=METER, name=success, count=12, mean_rate=0.5768131773739456, m1=0.6012785791263936, m5=0.6000546385677541, m15=0.6000061386568257, rate_unit=events/second |
| .... |
| |
| The Camel application can be stopped pressing ctrl+c in the shell. |
| |
| === Help and contributions |
| |
| If you hit any problem using Camel or have some feedback, then please |
| https://camel.apache.org/support.html[let us know]. |
| |
| We also love contributors, so |
| https://camel.apache.org/contributing.html[get involved] :-) |
| |
| The Camel riders! |