You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2020/04/16 10:03:02 UTC

[camel-quarkus] branch aws2-sns created (now a125acb)

This is an automated email from the ASF dual-hosted git repository.

acosentino pushed a change to branch aws2-sns
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git.


      at a125acb  Added an AWS2 SNS extension

This branch includes the following new commits:

     new a125acb  Added an AWS2 SNS extension

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[camel-quarkus] 01/01: Added an AWS2 SNS extension

Posted by ac...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

acosentino pushed a commit to branch aws2-sns
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git

commit a125acb4e601dea824be27e8332eb0cb3acecd44
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Thu Apr 16 11:55:28 2020 +0200

    Added an AWS2 SNS extension
---
 .../pages/list-of-camel-quarkus-extensions.adoc    |  4 +-
 .../aws2/sns/deployment/Aws2SnsProcessor.java      | 47 -------------
 extensions-jvm/aws2-sns/integration-test/pom.xml   | 80 ----------------------
 .../component/aws2/sns/it/Aws2SnsResource.java     | 51 --------------
 .../quarkus/component/aws2/sns/it/Aws2SnsTest.java | 34 ---------
 extensions-jvm/pom.xml                             |  1 -
 .../aws2-sns/deployment/pom.xml                    | 16 ++++-
 .../aws2/sns/deployment/Aws2SnsProcessor.java      | 77 +++++++++++++++++++++
 {extensions-jvm => extensions}/aws2-sns/pom.xml    |  5 +-
 .../aws2-sns/runtime/pom.xml                       | 18 ++++-
 .../main/resources/META-INF/quarkus-extension.yaml |  8 +--
 extensions/pom.xml                                 |  1 +
 integration-tests/aws2/pom.xml                     |  4 ++
 .../camel/quarkus/component/aws2/CamelRoute.java   |  5 ++
 .../aws2/src/main/resources/application.properties | 15 ++--
 poms/bom/pom.xml                                   |  6 ++
 16 files changed, 136 insertions(+), 236 deletions(-)

diff --git a/docs/modules/ROOT/pages/list-of-camel-quarkus-extensions.adoc b/docs/modules/ROOT/pages/list-of-camel-quarkus-extensions.adoc
index 3a85d4c..48b5df0 100644
--- a/docs/modules/ROOT/pages/list-of-camel-quarkus-extensions.adoc
+++ b/docs/modules/ROOT/pages/list-of-camel-quarkus-extensions.adoc
@@ -90,8 +90,8 @@ Level | Since | Description
  Preview | 1.0.0-M6 | The aws2-ses component is used for sending emails with Amazon's SES service.
 
 | link:https://camel.apache.org/components/latest/aws2-sns-component.html[AWS 2 Simple Notification System] (camel-quarkus-aws2-sns) +
-`aws2-sns:topicNameOrArn` | JVM +
- Preview | 1.0.0-M6 | The aws2-sns component is used for sending messages to an Amazon Simple Notification Topic.
+`aws2-sns:topicNameOrArn` | Native +
+ Stable | 1.0.0-M7 | The aws2-sns component is used for sending messages to an Amazon Simple Notification Topic.
 
 | link:https://camel.apache.org/components/latest/aws2-sqs-component.html[AWS 2 Simple Queue Service] (camel-quarkus-aws2-sqs) +
 `aws2-sqs:queueNameOrArn` | Native +
diff --git a/extensions-jvm/aws2-sns/deployment/src/main/java/org/apache/camel/quarkus/component/aws2/sns/deployment/Aws2SnsProcessor.java b/extensions-jvm/aws2-sns/deployment/src/main/java/org/apache/camel/quarkus/component/aws2/sns/deployment/Aws2SnsProcessor.java
deleted file mode 100644
index a583b97..0000000
--- a/extensions-jvm/aws2-sns/deployment/src/main/java/org/apache/camel/quarkus/component/aws2/sns/deployment/Aws2SnsProcessor.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.quarkus.component.aws2.sns.deployment;
-
-import io.quarkus.deployment.annotations.BuildStep;
-import io.quarkus.deployment.annotations.ExecutionTime;
-import io.quarkus.deployment.annotations.Record;
-import io.quarkus.deployment.builditem.FeatureBuildItem;
-import io.quarkus.deployment.pkg.steps.NativeBuild;
-import org.apache.camel.quarkus.core.JvmOnlyRecorder;
-import org.jboss.logging.Logger;
-
-class Aws2SnsProcessor {
-    private static final Logger LOG = Logger.getLogger(Aws2SnsProcessor.class);
-
-    private static final String FEATURE = "camel-aws2-sns";
-
-    @BuildStep
-    FeatureBuildItem feature() {
-        return new FeatureBuildItem(FEATURE);
-    }
-
-    /**
-     * Remove this once this extension starts supporting the native mode.
-     */
-    @BuildStep(onlyIf = NativeBuild.class)
-    @Record(value = ExecutionTime.RUNTIME_INIT)
-    void warnJvmInNative(JvmOnlyRecorder recorder) {
-        JvmOnlyRecorder.warnJvmInNative(LOG, FEATURE); // warn at build time
-        recorder.warnJvmInNative(FEATURE); // warn at runtime
-    }
-
-}
diff --git a/extensions-jvm/aws2-sns/integration-test/pom.xml b/extensions-jvm/aws2-sns/integration-test/pom.xml
deleted file mode 100644
index 1150ca8..0000000
--- a/extensions-jvm/aws2-sns/integration-test/pom.xml
+++ /dev/null
@@ -1,80 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    Licensed to the Apache Software Foundation (ASF) under one or more
-    contributor license agreements.  See the NOTICE file distributed with
-    this work for additional information regarding copyright ownership.
-    The ASF licenses this file to You under the Apache License, Version 2.0
-    (the "License"); you may not use this file except in compliance with
-    the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
-
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>org.apache.camel.quarkus</groupId>
-        <artifactId>camel-quarkus-aws2-sns-parent</artifactId>
-        <version>1.1.0-SNAPSHOT</version>
-    </parent>
-
-    <artifactId>camel-quarkus-aws2-sns-integration-test</artifactId>
-    <name>Camel Quarkus :: AWS 2 Simple Notification System :: Integration Test</name>
-    <description>Integration tests for Camel Quarkus AWS 2 Simple Notification System extension</description>
-
-    <properties>
-        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->
-        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
-        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
-        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
-        <!-- Please update rule whenever you change the dependencies of this module by running -->
-        <!--     mvn process-resources -Pformat    from the root directory -->
-        <mvnd.builder.rule>camel-quarkus-aws2-sns-deployment,camel-quarkus-support-policy-deployment</mvnd.builder.rule>
-    </properties>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.camel.quarkus</groupId>
-            <artifactId>camel-quarkus-aws2-sns</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>io.quarkus</groupId>
-            <artifactId>quarkus-resteasy</artifactId>
-        </dependency>
-
-        <!-- test dependencies -->
-        <dependency>
-            <groupId>io.quarkus</groupId>
-            <artifactId>quarkus-junit5</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>io.rest-assured</groupId>
-            <artifactId>rest-assured</artifactId>
-            <scope>test</scope>
-        </dependency>
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>io.quarkus</groupId>
-                <artifactId>quarkus-maven-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <goals>
-                            <goal>build</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
-</project>
diff --git a/extensions-jvm/aws2-sns/integration-test/src/main/java/org/apache/camel/quarkus/component/aws2/sns/it/Aws2SnsResource.java b/extensions-jvm/aws2-sns/integration-test/src/main/java/org/apache/camel/quarkus/component/aws2/sns/it/Aws2SnsResource.java
deleted file mode 100644
index 466a91c..0000000
--- a/extensions-jvm/aws2-sns/integration-test/src/main/java/org/apache/camel/quarkus/component/aws2/sns/it/Aws2SnsResource.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.quarkus.component.aws2.sns.it;
-
-import javax.enterprise.context.ApplicationScoped;
-import javax.inject.Inject;
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-
-import org.apache.camel.CamelContext;
-import org.jboss.logging.Logger;
-
-@Path("/aws2-sns")
-@ApplicationScoped
-public class Aws2SnsResource {
-
-    private static final Logger LOG = Logger.getLogger(Aws2SnsResource.class);
-
-    private static final String COMPONENT_AWS2_SNS = "aws2-sns";
-    @Inject
-    CamelContext context;
-
-    @Path("/load/component/aws2-sns")
-    @GET
-    @Produces(MediaType.TEXT_PLAIN)
-    public Response loadComponentAws2Sns() throws Exception {
-        /* This is an autogenerated test */
-        if (context.getComponent(COMPONENT_AWS2_SNS) != null) {
-            return Response.ok().build();
-        }
-        LOG.warnf("Could not load [%s] from the Camel context", COMPONENT_AWS2_SNS);
-        return Response.status(500, COMPONENT_AWS2_SNS + " could not be loaded from the Camel context").build();
-    }
-}
diff --git a/extensions-jvm/aws2-sns/integration-test/src/test/java/org/apache/camel/quarkus/component/aws2/sns/it/Aws2SnsTest.java b/extensions-jvm/aws2-sns/integration-test/src/test/java/org/apache/camel/quarkus/component/aws2/sns/it/Aws2SnsTest.java
deleted file mode 100644
index c9a2278..0000000
--- a/extensions-jvm/aws2-sns/integration-test/src/test/java/org/apache/camel/quarkus/component/aws2/sns/it/Aws2SnsTest.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.quarkus.component.aws2.sns.it;
-
-import io.quarkus.test.junit.QuarkusTest;
-import io.restassured.RestAssured;
-import org.junit.jupiter.api.Test;
-
-@QuarkusTest
-class Aws2SnsTest {
-
-    @Test
-    public void loadComponentAws2Sns() {
-        /* A simple autogenerated test */
-        RestAssured.get("/aws2-sns/load/component/aws2-sns")
-                .then()
-                .statusCode(200);
-    }
-
-}
diff --git a/extensions-jvm/pom.xml b/extensions-jvm/pom.xml
index baf3a27..d91fb23 100644
--- a/extensions-jvm/pom.xml
+++ b/extensions-jvm/pom.xml
@@ -46,7 +46,6 @@
         <module>aws2-mq</module>
         <module>aws2-msk</module>
         <module>aws2-ses</module>
-        <module>aws2-sns</module>
         <module>aws2-translate</module>
         <module>cassandraql</module>
         <module>couchbase</module>
diff --git a/extensions-jvm/aws2-sns/deployment/pom.xml b/extensions/aws2-sns/deployment/pom.xml
similarity index 78%
rename from extensions-jvm/aws2-sns/deployment/pom.xml
rename to extensions/aws2-sns/deployment/pom.xml
index dc6f3d2..5b7ea6a 100644
--- a/extensions-jvm/aws2-sns/deployment/pom.xml
+++ b/extensions/aws2-sns/deployment/pom.xml
@@ -17,7 +17,9 @@
     limitations under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.apache.camel.quarkus</groupId>
@@ -50,6 +52,18 @@
             <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-aws2-sns</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-support-xml-deployment</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-support-commons-logging-deployment</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-support-aws2-deployment</artifactId>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/extensions/aws2-sns/deployment/src/main/java/org/apache/camel/quarkus/component/aws2/sns/deployment/Aws2SnsProcessor.java b/extensions/aws2-sns/deployment/src/main/java/org/apache/camel/quarkus/component/aws2/sns/deployment/Aws2SnsProcessor.java
new file mode 100644
index 0000000..58f0525
--- /dev/null
+++ b/extensions/aws2-sns/deployment/src/main/java/org/apache/camel/quarkus/component/aws2/sns/deployment/Aws2SnsProcessor.java
@@ -0,0 +1,77 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.quarkus.component.aws2.sns.deployment;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import io.quarkus.arc.deployment.AdditionalBeanBuildItem;
+import io.quarkus.deployment.annotations.BuildProducer;
+import io.quarkus.deployment.annotations.BuildStep;
+import io.quarkus.deployment.builditem.CombinedIndexBuildItem;
+import io.quarkus.deployment.builditem.ExtensionSslNativeSupportBuildItem;
+import io.quarkus.deployment.builditem.FeatureBuildItem;
+import io.quarkus.deployment.builditem.nativeimage.NativeImageResourceBuildItem;
+import io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem;
+import org.jboss.jandex.DotName;
+import software.amazon.awssdk.core.interceptor.ExecutionInterceptor;
+
+class Aws2SnsProcessor {
+
+    private static final String FEATURE = "camel-aws2-sns";
+
+    public static final String AWS_SDK_APPLICATION_ARCHIVE_MARKERS = "software/amazon/awssdk";
+
+    private static final List<String> INTERCEPTOR_PATHS = Arrays.asList(
+            "software/amazon/awssdk/global/handlers/execution.interceptors",
+            "software/amazon/awssdk/services/sns/execution.interceptors");
+
+    private static final DotName EXECUTION_INTERCEPTOR_NAME = DotName.createSimple(ExecutionInterceptor.class.getName());
+
+    @BuildStep
+    FeatureBuildItem feature() {
+        return new FeatureBuildItem(FEATURE);
+    }
+
+    @BuildStep
+    ExtensionSslNativeSupportBuildItem activateSslNativeSupport() {
+        return new ExtensionSslNativeSupportBuildItem(FEATURE);
+    }
+
+    @BuildStep(applicationArchiveMarkers = { AWS_SDK_APPLICATION_ARCHIVE_MARKERS })
+    void process(CombinedIndexBuildItem combinedIndexBuildItem,
+            BuildProducer<ExtensionSslNativeSupportBuildItem> extensionSslNativeSupport,
+            BuildProducer<ReflectiveClassBuildItem> reflectiveClasses,
+            BuildProducer<FeatureBuildItem> feature,
+            BuildProducer<AdditionalBeanBuildItem> additionalBeans,
+            BuildProducer<NativeImageResourceBuildItem> resource) {
+
+        INTERCEPTOR_PATHS.forEach(path -> resource.produce(new NativeImageResourceBuildItem(path)));
+
+        List<String> knownInterceptorImpls = combinedIndexBuildItem.getIndex()
+                .getAllKnownImplementors(EXECUTION_INTERCEPTOR_NAME)
+                .stream()
+                .map(c -> c.name().toString()).collect(Collectors.toList());
+
+        reflectiveClasses.produce(new ReflectiveClassBuildItem(false, false,
+                knownInterceptorImpls.toArray(new String[knownInterceptorImpls.size()])));
+
+        reflectiveClasses.produce(new ReflectiveClassBuildItem(true, false,
+                String.class.getCanonicalName()));
+    }
+}
diff --git a/extensions-jvm/aws2-sns/pom.xml b/extensions/aws2-sns/pom.xml
similarity index 85%
rename from extensions-jvm/aws2-sns/pom.xml
rename to extensions/aws2-sns/pom.xml
index fea3bff..2fc355f 100644
--- a/extensions-jvm/aws2-sns/pom.xml
+++ b/extensions/aws2-sns/pom.xml
@@ -17,7 +17,9 @@
     limitations under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.apache.camel.quarkus</groupId>
@@ -33,6 +35,5 @@
     <modules>
         <module>deployment</module>
         <module>runtime</module>
-        <module>integration-test</module>
     </modules>
 </project>
diff --git a/extensions-jvm/aws2-sns/runtime/pom.xml b/extensions/aws2-sns/runtime/pom.xml
similarity index 79%
rename from extensions-jvm/aws2-sns/runtime/pom.xml
rename to extensions/aws2-sns/runtime/pom.xml
index 704ba09..cf4e527 100644
--- a/extensions-jvm/aws2-sns/runtime/pom.xml
+++ b/extensions/aws2-sns/runtime/pom.xml
@@ -17,7 +17,9 @@
     limitations under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.apache.camel.quarkus</groupId>
@@ -31,7 +33,7 @@
     <description>The aws2-sns component is used for sending messages to an Amazon Simple Notification Topic.</description>
 
     <properties>
-        <firstVersion>1.0.0-M6</firstVersion>
+        <firstVersion>1.0.0-M7</firstVersion>
     </properties>
 
     <dependencyManagement>
@@ -55,6 +57,18 @@
             <groupId>org.apache.camel</groupId>
             <artifactId>camel-aws2-sns</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-support-aws2</artifactId>
+        </dependency>
+       <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-support-xml</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-support-commons-logging</artifactId>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/extensions-jvm/aws2-sns/runtime/src/main/resources/META-INF/quarkus-extension.yaml b/extensions/aws2-sns/runtime/src/main/resources/META-INF/quarkus-extension.yaml
similarity index 87%
rename from extensions-jvm/aws2-sns/runtime/src/main/resources/META-INF/quarkus-extension.yaml
rename to extensions/aws2-sns/runtime/src/main/resources/META-INF/quarkus-extension.yaml
index 6d46de0..ffd8cfd 100644
--- a/extensions-jvm/aws2-sns/runtime/src/main/resources/META-INF/quarkus-extension.yaml
+++ b/extensions/aws2-sns/runtime/src/main/resources/META-INF/quarkus-extension.yaml
@@ -19,12 +19,10 @@
 name: "AWS 2 Simple Notification System"
 description: "The aws2-sns component is used for sending messages to an Amazon Simple Notification Topic."
 metadata:
-  unlisted: true
   keywords:
+  - "camel"
+  - "aws"
   - "cloud"
-  - "messaging"
-  - "mobile"
-  guide: "https://camel.apache.org/components/latest/aws2-sns-component.html"
+  guide: "https://quarkus.io/guides/camel"
   categories:
   - "integration"
-  status: "preview"
diff --git a/extensions/pom.xml b/extensions/pom.xml
index 031bd6d..8db68d6 100644
--- a/extensions/pom.xml
+++ b/extensions/pom.xml
@@ -52,6 +52,7 @@
         <module>aws-swf</module>
         <module>aws-translate</module>
         <module>aws2-s3</module>
+        <module>aws2-sns</module>
         <module>aws2-sqs</module>
         <module>azure</module>
         <module>base64</module>
diff --git a/integration-tests/aws2/pom.xml b/integration-tests/aws2/pom.xml
index 45e17c7..e60f790 100644
--- a/integration-tests/aws2/pom.xml
+++ b/integration-tests/aws2/pom.xml
@@ -58,6 +58,10 @@
         </dependency>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-aws2-sns</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-aws2-sqs</artifactId>
         </dependency>
         <dependency>
diff --git a/integration-tests/aws2/src/main/java/org/apache/camel/quarkus/component/aws2/CamelRoute.java b/integration-tests/aws2/src/main/java/org/apache/camel/quarkus/component/aws2/CamelRoute.java
index d3637f4..4c96655 100644
--- a/integration-tests/aws2/src/main/java/org/apache/camel/quarkus/component/aws2/CamelRoute.java
+++ b/integration-tests/aws2/src/main/java/org/apache/camel/quarkus/component/aws2/CamelRoute.java
@@ -33,6 +33,11 @@ public class CamelRoute extends RouteBuilder {
                 .setBody(constant("Quarkus is great!"))
                 .to("aws2-s3://camel-kafka-connector")
                 .to("log:sf?showAll=true");
+
+        from("timer:quarkus-sns?repeatCount=1")
+                .setBody(constant("Quarkus is great!"))
+                .to("aws2-sns://topic1")
+                .to("log:sf?showAll=true");
     }
 
 }
diff --git a/integration-tests/aws2/src/main/resources/application.properties b/integration-tests/aws2/src/main/resources/application.properties
index 846539f..d8fdb9c 100644
--- a/integration-tests/aws2/src/main/resources/application.properties
+++ b/integration-tests/aws2/src/main/resources/application.properties
@@ -20,15 +20,8 @@
 camel.context.name = quarkus-camel-example
 
 #
-# Camel :: AWS SQS
+# Camel :: AWS SNS
 #
-camel.component.aws2-sqs.access-key={{env:AWS_ACCESS_KEY}}
-camel.component.aws2-sqs.secret-key={{env:AWS_SECRET_KEY}}
-camel.component.aws2-sqs.region={{env:AWS_REGION}}
-
-#
-# Camel :: AWS S3
-#
-camel.component.aws2-s3.access-key={{env:AWS_ACCESS_KEY}}
-camel.component.aws2-s3.secret-key={{env:AWS_SECRET_KEY}}
-camel.component.aws2-s3.region={{env:AWS_REGION}}
\ No newline at end of file
+camel.component.aws2-*.access-key={{env:AWS_ACCESS_KEY}}
+camel.component.aws2-*.secret-key={{env:AWS_SECRET_KEY}}
+camel.component.aws2-*.region={{env:AWS_REGION}}
\ No newline at end of file
diff --git a/poms/bom/pom.xml b/poms/bom/pom.xml
index adc6de8..4600d2f 100644
--- a/poms/bom/pom.xml
+++ b/poms/bom/pom.xml
@@ -267,6 +267,12 @@
                 <groupId>org.apache.camel</groupId>
                 <artifactId>camel-aws2-sns</artifactId>
                 <version>${camel.version}</version>
+                <exclusions>
+                    <exclusion>
+                        <groupId>software.amazon.awssdk</groupId>
+                        <artifactId>netty-nio-client</artifactId>
+                    </exclusion>
+                </exclusions>
             </dependency>
             <dependency>
                 <groupId>org.apache.camel</groupId>