import org.apache.camel.Exchange;
import org.apache.camel.LoggingLevel;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.microprofile.metrics.MicroProfileMetricsConstants;
import javax.enterprise.context.ApplicationScoped;
@ApplicationScoped
public class Metrics extends RouteBuilder {
@Override
public void configure() {
onException()
.handled(true)
.maximumRedeliveries(2)
.logStackTrace(false)
.logExhausted(false)
.log(LoggingLevel.ERROR, "Failed processing ${body}")
// Register the 'redelivery' meter
.to("microprofile-metrics:meter:redelivery?mark=2")
// Register the 'error' meter
.to("microprofile-metrics:meter:error");
2
from("timer:stream?period=1000")
.routeId("unreliable-service")
.setBody(header(Exchange.TIMER_COUNTER).prepend("event #"))
.log("Processing ${body}...")
// Register the 'generated' meter
.to("microprofile-metrics:meter:generated")
3
// Register the 'attempt' meter via @Metered in Service.java
.bean("service")
4
.filter(header(Exchange.REDELIVERED))
.log(LoggingLevel.WARN, "Processed ${body} after ${header.CamelRedeliveryCounter} retries")
.setHeader(MicroProfileMetricsConstants.HEADER_METER_MARK, header(Exchange.REDELIVERY_COUNTER))
// Register the 'redelivery' meter
.to("microprofile-metrics:meter:redelivery")
5
.end()
.log("Successfully processed ${body}")
// Register the 'success' meter
.to("microprofile-metrics:meter:success");
6
}
}
Copy to ClipboardCopied!Toggle word wrapToggle overflow