This is an automated email from the ASF dual-hosted git repository.
jamesnetherton pushed a commit to branch camel-main
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
The following commit(s) were added to refs/heads/camel-main by this push:
new 60ab50a deadLetterChannel does not work in BaseRouteBuilder configure
method #3436
60ab50a is described below
commit 60ab50af015b7565439a3e3390455eefb92625e6
Author: JiriOndrusek <[email protected]>
AuthorDate: Mon Jan 10 13:26:13 2022 +0100
deadLetterChannel does not work in BaseRouteBuilder configure method #3436
---
.../it/Aws2SqsQuarkusClientTestEnvCustomizer.java | 3 ++
.../component/aws2/sqs/it/DeadLetterBuilder.java | 41 ++++++++++++++++++++++
.../quarkus/component/aws2/sqs/it/Aws2SqsTest.java | 20 +++++++++++
.../aws2/sqs/it/Aws2SqsTestEnvCustomizer.java | 23 +++++++++++-
.../test/support/aws2/Aws2TestEnvContext.java | 14 ++++++++
5 files changed, 100 insertions(+), 1 deletion(-)
diff --git
a/integration-test-groups/aws2-quarkus-client/aws2-sqs/src/test/java/org/apache/camel/quarkus/component/aws2/sqs/it/Aws2SqsQuarkusClientTestEnvCustomizer.java
b/integration-test-groups/aws2-quarkus-client/aws2-sqs/src/test/java/org/apache/camel/quarkus/component/aws2/sqs/it/Aws2SqsQuarkusClientTestEnvCustomizer.java
index 361459f..64e290d 100644
---
a/integration-test-groups/aws2-quarkus-client/aws2-sqs/src/test/java/org/apache/camel/quarkus/component/aws2/sqs/it/Aws2SqsQuarkusClientTestEnvCustomizer.java
+++
b/integration-test-groups/aws2-quarkus-client/aws2-sqs/src/test/java/org/apache/camel/quarkus/component/aws2/sqs/it/Aws2SqsQuarkusClientTestEnvCustomizer.java
@@ -34,6 +34,9 @@ public class Aws2SqsQuarkusClientTestEnvCustomizer extends
Aws2SqsTestEnvCustomi
super.customize(envContext);
+ //remove camel properties for client creation to ensure that client is
not created by camel component
+ envContext.removeClient(localstackServices());
+
Map<String, String> envContextProperties = envContext.getProperies();
envContext.property("quarkus.sqs.aws.credentials.static-provider.access-key-id",
envContext.getAccessKey());
diff --git
a/integration-test-groups/aws2/aws2-sqs/src/main/java/org/apache/camel/quarkus/component/aws2/sqs/it/DeadLetterBuilder.java
b/integration-test-groups/aws2/aws2-sqs/src/main/java/org/apache/camel/quarkus/component/aws2/sqs/it/DeadLetterBuilder.java
new file mode 100644
index 0000000..6d611ef
--- /dev/null
+++
b/integration-test-groups/aws2/aws2-sqs/src/main/java/org/apache/camel/quarkus/component/aws2/sqs/it/DeadLetterBuilder.java
@@ -0,0 +1,41 @@
+/*
+ * 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.sqs.it;
+
+import javax.enterprise.context.ApplicationScoped;
+
+import org.apache.camel.builder.RouteBuilder;
+import org.eclipse.microprofile.config.ConfigProvider;
+
+@ApplicationScoped
+public class DeadLetterBuilder extends RouteBuilder {
+
+ @Override
+ public void configure() {
+ String name =
ConfigProvider.getConfig().getValue("aws-sqs.failing-name", String.class);
+ String deadLetterName =
ConfigProvider.getConfig().getValue("aws-sqs.deadletter-name", String.class);
+ errorHandler(deadLetterChannel("aws2-sqs://" + deadLetterName)
+ .log("Error processing message and sending to the Dead Letter
Queue: Body: " + body())
+ .useOriginalMessage());
+
+ from("aws2-sqs://" + name)
+ .process(e -> {
+ throw new IllegalArgumentException();
+ });
+
+ }
+}
diff --git
a/integration-test-groups/aws2/aws2-sqs/src/test/java/org/apache/camel/quarkus/component/aws2/sqs/it/Aws2SqsTest.java
b/integration-test-groups/aws2/aws2-sqs/src/test/java/org/apache/camel/quarkus/component/aws2/sqs/it/Aws2SqsTest.java
index b0a928b..87d924e 100644
---
a/integration-test-groups/aws2/aws2-sqs/src/test/java/org/apache/camel/quarkus/component/aws2/sqs/it/Aws2SqsTest.java
+++
b/integration-test-groups/aws2/aws2-sqs/src/test/java/org/apache/camel/quarkus/component/aws2/sqs/it/Aws2SqsTest.java
@@ -55,6 +55,14 @@ class Aws2SqsTest {
return ConfigProvider.getConfig().getValue("aws-sqs.queue-name",
String.class);
}
+ private String getPredefinedFailingQueueName() {
+ return ConfigProvider.getConfig().getValue("aws-sqs.failing-name",
String.class);
+ }
+
+ private String getPredefinedDeadletterQueueName() {
+ return ConfigProvider.getConfig().getValue("aws-sqs.deadletter-name",
String.class);
+ }
+
@AfterEach
void purgeQueueAndWait() {
String qName = getPredefinedQueueName();
@@ -96,6 +104,18 @@ class Aws2SqsTest {
}
@Test
+ void deadletter() {
+ final String failingQueueName = getPredefinedFailingQueueName();
+ final String deadletterQueueName = getPredefinedDeadletterQueueName();
+
+ final String[] queues = listQueues();
+ Assertions.assertTrue(Stream.of(queues).anyMatch(url ->
url.contains(failingQueueName)));
+
+ final String msg = sendSingleMessageToQueue(failingQueueName);
+ awaitMessageWithExpectedContentFromQueue(msg, deadletterQueueName);
+ }
+
+ @Test
void sqsDeleteMessage() {
final String qName = getPredefinedQueueName();
sendSingleMessageToQueue(qName);
diff --git
a/integration-test-groups/aws2/aws2-sqs/src/test/java/org/apache/camel/quarkus/component/aws2/sqs/it/Aws2SqsTestEnvCustomizer.java
b/integration-test-groups/aws2/aws2-sqs/src/test/java/org/apache/camel/quarkus/component/aws2/sqs/it/Aws2SqsTestEnvCustomizer.java
index 43d078a..ca00184 100644
---
a/integration-test-groups/aws2/aws2-sqs/src/test/java/org/apache/camel/quarkus/component/aws2/sqs/it/Aws2SqsTestEnvCustomizer.java
+++
b/integration-test-groups/aws2/aws2-sqs/src/test/java/org/apache/camel/quarkus/component/aws2/sqs/it/Aws2SqsTestEnvCustomizer.java
@@ -38,6 +38,10 @@ public class Aws2SqsTestEnvCustomizer implements
Aws2TestEnvCustomizer {
/* SQS */
final String queueName = "camel-quarkus-" +
RandomStringUtils.randomAlphanumeric(49).toLowerCase(Locale.ROOT);
envContext.property("aws-sqs.queue-name", queueName);
+ final String failingQueueName = "camel-quarkus-" +
RandomStringUtils.randomAlphanumeric(49).toLowerCase(Locale.ROOT);
+ envContext.property("aws-sqs.failing-name", failingQueueName);
+ final String deadletterQueueName = "camel-quarkus-" +
RandomStringUtils.randomAlphanumeric(49).toLowerCase(Locale.ROOT);
+ envContext.property("aws-sqs.deadletter-name", deadletterQueueName);
final SqsClient sqsClient = envContext.client(Service.SQS,
SqsClient::builder);
{
@@ -46,7 +50,24 @@ public class Aws2SqsTestEnvCustomizer implements
Aws2TestEnvCustomizer {
.queueName(queueName)
.build())
.queueUrl();
- envContext.closeable(() ->
sqsClient.deleteQueue(DeleteQueueRequest.builder().queueUrl(queueUrl).build()));
+
+ final String failingUrl = sqsClient.createQueue(
+ CreateQueueRequest.builder()
+ .queueName(failingQueueName)
+ .build())
+ .queueUrl();
+
+ final String deadletterUrl = sqsClient.createQueue(
+ CreateQueueRequest.builder()
+ .queueName(deadletterQueueName)
+ .build())
+ .queueUrl();
+
+ envContext.closeable(() -> {
+
sqsClient.deleteQueue(DeleteQueueRequest.builder().queueUrl(queueUrl).build());
+
sqsClient.deleteQueue(DeleteQueueRequest.builder().queueUrl(failingUrl).build());
+
sqsClient.deleteQueue(DeleteQueueRequest.builder().queueUrl(deadletterUrl).build());
+ });
}
}
diff --git
a/integration-tests-support/aws2/src/main/java/org/apache/camel/quarkus/test/support/aws2/Aws2TestEnvContext.java
b/integration-tests-support/aws2/src/main/java/org/apache/camel/quarkus/test/support/aws2/Aws2TestEnvContext.java
index a7db2ea..571b6f6 100644
---
a/integration-tests-support/aws2/src/main/java/org/apache/camel/quarkus/test/support/aws2/Aws2TestEnvContext.java
+++
b/integration-tests-support/aws2/src/main/java/org/apache/camel/quarkus/test/support/aws2/Aws2TestEnvContext.java
@@ -87,6 +87,20 @@ public class Aws2TestEnvContext {
}
/**
+ * Removes client properties to be not seen by AWS 2 tests
+ *
+ * @param services
+ */
+ public void removeClient(Service[] services) {
+ for (Service service : services) {
+ String s = camelServiceAcronym(service);
+ properties.remove("camel.component.aws2-" + s + ".access-key");
+ properties.remove("camel.component.aws2-" + s + ".secret-key");
+ properties.remove("camel.component.aws2-" + s + ".region");
+ }
+ }
+
+ /**
* Add an {@link AutoCloseable} to be closed after running AWS 2 tests
*
* @param closeable the {@link AutoCloseable} to add