This is an automated email from the ASF dual-hosted git repository. acosentino pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel.git
commit 3009b77c41b5a08bab8f10d24ec7595d099e2cfa Author: Andrea Cosentino <[email protected]> AuthorDate: Wed Feb 1 11:44:21 2023 +0100 CAMEL-18131 - camel-health - Add health checks for components that has extension for connectivity verification - AWS Cloudtrail Signed-off-by: Andrea Cosentino <[email protected]> --- .../aws/cloudtrail/CloudtrailConsumer.java | 30 ++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/components/camel-aws/camel-aws-cloudtrail/src/main/java/org/apache/camel/component/aws/cloudtrail/CloudtrailConsumer.java b/components/camel-aws/camel-aws-cloudtrail/src/main/java/org/apache/camel/component/aws/cloudtrail/CloudtrailConsumer.java index fff8e9d30fd..55ac4755e01 100644 --- a/components/camel-aws/camel-aws-cloudtrail/src/main/java/org/apache/camel/component/aws/cloudtrail/CloudtrailConsumer.java +++ b/components/camel-aws/camel-aws-cloudtrail/src/main/java/org/apache/camel/component/aws/cloudtrail/CloudtrailConsumer.java @@ -26,9 +26,12 @@ import java.util.Queue; import org.apache.camel.AsyncCallback; import org.apache.camel.Exchange; import org.apache.camel.Processor; +import org.apache.camel.health.HealthCheckHelper; +import org.apache.camel.health.WritableHealthCheckRepository; import org.apache.camel.support.ScheduledBatchPollingConsumer; import org.apache.camel.util.CastUtils; import org.apache.camel.util.ObjectHelper; +import software.amazon.awssdk.awscore.exception.AwsServiceException; import software.amazon.awssdk.services.cloudtrail.CloudTrailClient; import software.amazon.awssdk.services.cloudtrail.model.Event; import software.amazon.awssdk.services.cloudtrail.model.LookupAttribute; @@ -39,10 +42,28 @@ import software.amazon.awssdk.services.cloudtrail.model.LookupEventsResponse; public class CloudtrailConsumer extends ScheduledBatchPollingConsumer { private static Instant lastTime; + private WritableHealthCheckRepository healthCheckRepository; + private CloudtrailConsumerHealthCheck consumerHealthCheck; + public CloudtrailConsumer(CloudtrailEndpoint endpoint, Processor processor) { super(endpoint, processor); } + @Override + protected void doStart() throws Exception { + super.doStart(); + + healthCheckRepository = HealthCheckHelper.getHealthCheckRepository( + getEndpoint().getCamelContext(), + "components", + WritableHealthCheckRepository.class); + + if (healthCheckRepository != null) { + consumerHealthCheck = new CloudtrailConsumerHealthCheck(this, getRouteId()); + healthCheckRepository.addHealthCheck(consumerHealthCheck); + } + } + @Override protected int poll() throws Exception { LookupEventsRequest.Builder eventsRequestBuilder @@ -85,6 +106,15 @@ public class CloudtrailConsumer extends ScheduledBatchPollingConsumer { return processedExchanges; } + @Override + protected void doStop() throws Exception { + if (healthCheckRepository != null && consumerHealthCheck != null) { + healthCheckRepository.removeHealthCheck(consumerHealthCheck); + consumerHealthCheck = null; + } + super.doStop(); + } + private CloudTrailClient getClient() { return getEndpoint().getClient(); }
