You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ni...@apache.org on 2013/08/09 03:28:11 UTC
git commit: CAMEL-6621 Add ability to connect to SQS queue of
different owner with thanks to Jeff
Updated Branches:
refs/heads/master 041e98bfa -> fa97c17a1
CAMEL-6621 Add ability to connect to SQS queue of different owner with thanks to Jeff
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/fa97c17a
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/fa97c17a
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/fa97c17a
Branch: refs/heads/master
Commit: fa97c17a1624b6eeccea7da30d500ec316492c43
Parents: 041e98b
Author: Willem Jiang <ni...@apache.org>
Authored: Fri Aug 9 09:26:40 2013 +0800
Committer: Willem Jiang <ni...@apache.org>
Committed: Fri Aug 9 09:27:16 2013 +0800
----------------------------------------------------------------------
.../component/aws/sqs/SqsConfiguration.java | 10 ++++++++
.../camel/component/aws/sqs/SqsEndpoint.java | 26 ++++++++++++++------
.../aws/sqs/SqsComponentConfigurationTest.java | 4 ++-
.../component/aws/sqs/SqsEndpointTest.java | 17 +++++++++++++
4 files changed, 48 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/fa97c17a/components/camel-aws/src/main/java/org/apache/camel/component/aws/sqs/SqsConfiguration.java
----------------------------------------------------------------------
diff --git a/components/camel-aws/src/main/java/org/apache/camel/component/aws/sqs/SqsConfiguration.java b/components/camel-aws/src/main/java/org/apache/camel/component/aws/sqs/SqsConfiguration.java
index c0295e3..2de6b0f 100644
--- a/components/camel-aws/src/main/java/org/apache/camel/component/aws/sqs/SqsConfiguration.java
+++ b/components/camel-aws/src/main/java/org/apache/camel/component/aws/sqs/SqsConfiguration.java
@@ -32,6 +32,7 @@ public class SqsConfiguration {
private String accessKey;
private String secretKey;
private String amazonSQSEndpoint;
+ private String queueOwnerAWSAccountId;
// consumer properties
private Boolean deleteAfterRead = Boolean.TRUE;
@@ -177,6 +178,14 @@ public class SqsConfiguration {
public void setWaitTimeSeconds(Integer waitTimeSeconds) {
this.waitTimeSeconds = waitTimeSeconds;
}
+
+ public String getQueueOwnerAWSAccountId() {
+ return queueOwnerAWSAccountId;
+ }
+
+ public void setQueueOwnerAWSAccountId(String queueOwnerAWSAccountId) {
+ this.queueOwnerAWSAccountId = queueOwnerAWSAccountId;
+ }
@Override
public String toString() {
@@ -195,6 +204,7 @@ public class SqsConfiguration {
+ ", delaySeconds=" + delaySeconds
+ ", policy=" + policy
+ ", extendMessageVisibility=" + extendMessageVisibility
+ + ", queueOwnerAWSAccountId=" + queueOwnerAWSAccountId
+ "]";
}
}
http://git-wip-us.apache.org/repos/asf/camel/blob/fa97c17a/components/camel-aws/src/main/java/org/apache/camel/component/aws/sqs/SqsEndpoint.java
----------------------------------------------------------------------
diff --git a/components/camel-aws/src/main/java/org/apache/camel/component/aws/sqs/SqsEndpoint.java b/components/camel-aws/src/main/java/org/apache/camel/component/aws/sqs/SqsEndpoint.java
index 40ee0b5..8236c65 100644
--- a/components/camel-aws/src/main/java/org/apache/camel/component/aws/sqs/SqsEndpoint.java
+++ b/components/camel-aws/src/main/java/org/apache/camel/component/aws/sqs/SqsEndpoint.java
@@ -24,6 +24,8 @@ import com.amazonaws.services.sqs.AmazonSQS;
import com.amazonaws.services.sqs.AmazonSQSClient;
import com.amazonaws.services.sqs.model.CreateQueueRequest;
import com.amazonaws.services.sqs.model.CreateQueueResult;
+import com.amazonaws.services.sqs.model.GetQueueUrlRequest;
+import com.amazonaws.services.sqs.model.GetQueueUrlResult;
import com.amazonaws.services.sqs.model.ListQueuesResult;
import com.amazonaws.services.sqs.model.QueueAttributeName;
import com.amazonaws.services.sqs.model.SetQueueAttributesRequest;
@@ -78,14 +80,22 @@ public class SqsEndpoint extends ScheduledPollEndpoint {
client = getConfiguration().getAmazonSQSClient() != null
? getConfiguration().getAmazonSQSClient() : getClient();
- // check whether the queue already exists
- ListQueuesResult listQueuesResult = client.listQueues();
- for (String url : listQueuesResult.getQueueUrls()) {
- if (url.endsWith("/" + configuration.getQueueName())) {
- queueUrl = url;
- LOG.trace("Queue available at '{}'.", queueUrl);
- break;
- }
+ if (configuration.getQueueOwnerAWSAccountId() != null) {
+ GetQueueUrlRequest getQueueUrlRequest = new GetQueueUrlRequest();
+ getQueueUrlRequest.setQueueName(configuration.getQueueName());
+ getQueueUrlRequest.setQueueOwnerAWSAccountId(configuration.getQueueOwnerAWSAccountId());
+ GetQueueUrlResult getQueueUrlResult = client.getQueueUrl(getQueueUrlRequest );
+ queueUrl = getQueueUrlResult.getQueueUrl();
+ } else {
+ // check whether the queue already exists
+ ListQueuesResult listQueuesResult = client.listQueues();
+ for (String url : listQueuesResult.getQueueUrls()) {
+ if (url.endsWith("/" + configuration.getQueueName())) {
+ queueUrl = url;
+ LOG.trace("Queue available at '{}'.", queueUrl);
+ break;
+ }
+ }
}
if (queueUrl == null) {
http://git-wip-us.apache.org/repos/asf/camel/blob/fa97c17a/components/camel-aws/src/test/java/org/apache/camel/component/aws/sqs/SqsComponentConfigurationTest.java
----------------------------------------------------------------------
diff --git a/components/camel-aws/src/test/java/org/apache/camel/component/aws/sqs/SqsComponentConfigurationTest.java b/components/camel-aws/src/test/java/org/apache/camel/component/aws/sqs/SqsComponentConfigurationTest.java
index 090cd32..5a591e9 100644
--- a/components/camel-aws/src/test/java/org/apache/camel/component/aws/sqs/SqsComponentConfigurationTest.java
+++ b/components/camel-aws/src/test/java/org/apache/camel/component/aws/sqs/SqsComponentConfigurationTest.java
@@ -79,7 +79,8 @@ public class SqsComponentConfigurationTest extends CamelTestSupport {
+ "&DefaultVisibilityTimeout=1000&visibilityTimeout=2000&maximumMessageSize=65536&messageRetentionPeriod=1209600&policy="
+ "%7B%22Version%22%3A%222008-10-17%22%2C%22Id%22%3A%22%2F195004372649%2FMyQueue%2FSQSDefaultPolicy%22%2C%22Statement%22%3A%5B%7B%22Sid%22%3A%22Queue1ReceiveMessage%22%2C%22"
+ "Effect%22%3A%22Allow%22%2C%22Principal%22%3A%7B%22AWS%22%3A%22*%22%7D%2C%22Action%22%3A%22SQS%3AReceiveMessage%22%2C%22Resource%22%3A%22%2F195004372649%2FMyQueue%22%7D%5D%7D"
- + "&delaySeconds=123&receiveMessageWaitTimeSeconds=10&waitTimeSeconds=20");
+ + "&delaySeconds=123&receiveMessageWaitTimeSeconds=10&waitTimeSeconds=20"
+ + "&queueOwnerAWSAccountId=111222333");
assertEquals("MyQueue", endpoint.getConfiguration().getQueueName());
assertEquals("xxx", endpoint.getConfiguration().getAccessKey());
@@ -97,6 +98,7 @@ public class SqsComponentConfigurationTest extends CamelTestSupport {
assertEquals(new Integer(123), endpoint.getConfiguration().getDelaySeconds());
assertEquals(Integer.valueOf(10), endpoint.getConfiguration().getReceiveMessageWaitTimeSeconds());
assertEquals(Integer.valueOf(20), endpoint.getConfiguration().getWaitTimeSeconds());
+ assertEquals("111222333", endpoint.getConfiguration().getQueueOwnerAWSAccountId());
}
@Test
http://git-wip-us.apache.org/repos/asf/camel/blob/fa97c17a/components/camel-aws/src/test/java/org/apache/camel/component/aws/sqs/SqsEndpointTest.java
----------------------------------------------------------------------
diff --git a/components/camel-aws/src/test/java/org/apache/camel/component/aws/sqs/SqsEndpointTest.java b/components/camel-aws/src/test/java/org/apache/camel/component/aws/sqs/SqsEndpointTest.java
index d383b46..45baf6a 100644
--- a/components/camel-aws/src/test/java/org/apache/camel/component/aws/sqs/SqsEndpointTest.java
+++ b/components/camel-aws/src/test/java/org/apache/camel/component/aws/sqs/SqsEndpointTest.java
@@ -17,6 +17,8 @@
package org.apache.camel.component.aws.sqs;
import com.amazonaws.services.sqs.AmazonSQSClient;
+import com.amazonaws.services.sqs.model.GetQueueUrlRequest;
+import com.amazonaws.services.sqs.model.GetQueueUrlResult;
import com.amazonaws.services.sqs.model.ListQueuesResult;
import org.apache.camel.impl.DefaultCamelContext;
@@ -53,4 +55,19 @@ public class SqsEndpointTest {
EasyMock.verify(amazonSQSClient);
}
+
+ @Test
+ public void doStartWithDifferentQueueOwner() throws Exception {
+
+ EasyMock.expect(amazonSQSClient.getQueueUrl(new GetQueueUrlRequest("test-queue").withQueueOwnerAWSAccountId("111222333")))
+ .andReturn(new GetQueueUrlResult().withQueueUrl("https://sqs.us-east-1.amazonaws.com/111222333/test-queue"));
+
+ EasyMock.replay(amazonSQSClient);
+
+ endpoint.getConfiguration().setQueueOwnerAWSAccountId("111222333");
+ endpoint.doStart();
+
+ EasyMock.verify(amazonSQSClient);
+
+ }
}
\ No newline at end of file