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();
     }

Reply via email to