This is an automated email from the ASF dual-hosted git repository. acosentino pushed a commit to branch camel-3.20.x in repository https://gitbox.apache.org/repos/asf/camel.git
commit 2dbb379b75b05fefb321c1a35cc8d945ff0da1d2 Author: Andrea Cosentino <anco...@gmail.com> 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 <anco...@gmail.com> --- .../aws/cloudtrail/CloudtrailConsumer.java | 31 ++++++++++++++++++++++ 1 file changed, 31 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 282d382922f..f68026811da 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,11 +26,15 @@ 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 org.slf4j.Logger; import org.slf4j.LoggerFactory; +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; @@ -44,10 +48,28 @@ 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 @@ -92,6 +114,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(); }