Skip to content

Commit f4ccdbd

Browse files
authored
V2 (#76)
* Upgrade to java sdk v2
1 parent 8b7e3ff commit f4ccdbd

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+1157
-1030
lines changed

README.md

+11
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,17 @@ Temporary queues are also automatically deleted if the clients that created them
1717
2. Sign in to the [Amazon SQS console](https://console.aws.amazon.com/sqs/home?region=us-east-1).
1818
3. To use the Temporary Queue client, you'll need [Java 8 (or later)](https://www.java.com/en/download/) and [Maven 3](http://maven.apache.org/).
1919
4. [Download the latest release](https://github.com/awslabs/amazon-sqs-java-temporary-queues-client/releases) or add a Maven dependency into your `pom.xml` file:
20+
### Version 2.x
21+
```xml
22+
<dependency>
23+
<groupId>com.amazonaws</groupId>
24+
<artifactId>amazon-sqs-java-temporary-queues-client</artifactId>
25+
<version>2.0.0</version>
26+
<type>jar</type>
27+
</dependency>
28+
```
29+
30+
### Version 1.x
2031
```xml
2132
<dependency>
2233
<groupId>com.amazonaws</groupId>

pom.xml

+22-19
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<modelVersion>4.0.0</modelVersion>
33
<groupId>com.amazonaws</groupId>
44
<artifactId>amazon-sqs-java-temporary-queues-client</artifactId>
5-
<version>1.2.4</version>
5+
<version>2.0.0</version>
66
<name>Amazon SQS Java Temporary Queues Client</name>
77
<description>An Amazon SQS client that supports creating lightweight, automatically-deleted temporary queues, for use in common messaging patterns such as Request/Response. See http://aws.amazon.com/sqs.</description>
88
<url>https://github.com/awslabs/amazon-sqs-java-temporary-queues-client</url>
@@ -27,26 +27,28 @@
2727
</developer>
2828
</developers>
2929
<properties>
30-
<aws-java-sdk.version>1.12.128</aws-java-sdk.version>
30+
<aws-java-sdk.version>2.17.140</aws-java-sdk.version>
3131
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
3232
</properties>
3333

34-
<dependencyManagement>
35-
<dependencies>
36-
<dependency>
37-
<groupId>com.amazonaws</groupId>
38-
<artifactId>aws-java-sdk-bom</artifactId>
39-
<version>1.12.128</version>
40-
<type>pom</type>
41-
<scope>import</scope>
42-
</dependency>
43-
</dependencies>
44-
</dependencyManagement>
45-
4634
<dependencies>
4735
<dependency>
48-
<groupId>com.amazonaws</groupId>
49-
<artifactId>aws-java-sdk-sqs</artifactId>
36+
<groupId>software.amazon.awssdk</groupId>
37+
<artifactId>sqs</artifactId>
38+
<version>${aws-java-sdk.version}</version>
39+
</dependency>
40+
<!-- https://mvnrepository.com/artifact/software.amazon.awssdk/core -->
41+
<dependency>
42+
<groupId>software.amazon.awssdk</groupId>
43+
<artifactId>test-utils</artifactId>
44+
<version>${aws-java-sdk.version}</version>
45+
</dependency>
46+
47+
<!-- https://mvnrepository.com/artifact/commons-logging/commons-logging -->
48+
<dependency>
49+
<groupId>commons-logging</groupId>
50+
<artifactId>commons-logging</artifactId>
51+
<version>1.2</version>
5052
</dependency>
5153

5254
<dependency>
@@ -64,7 +66,7 @@
6466
<dependency>
6567
<groupId>org.mockito</groupId>
6668
<artifactId>mockito-core</artifactId>
67-
<version>2.10.0</version>
69+
<version>2.28.2</version>
6870
<scope>test</scope>
6971
</dependency>
7072
<dependency>
@@ -74,8 +76,9 @@
7476
<scope>test</scope>
7577
</dependency>
7678
<dependency>
77-
<groupId>com.amazonaws</groupId>
78-
<artifactId>aws-java-sdk-sts</artifactId>
79+
<groupId>software.amazon.awssdk</groupId>
80+
<artifactId>sts</artifactId>
81+
<version>${aws-java-sdk.version}</version>
7982
<scope>test</scope>
8083
</dependency>
8184
</dependencies>

src/main/java/com/amazonaws/services/sqs/AmazonSQSIdleQueueDeletingClient.java

+119-111
Large diffs are not rendered by default.
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,30 @@
11
package com.amazonaws.services.sqs;
22

3+
import software.amazon.awssdk.services.sqs.SqsClient;
4+
import software.amazon.awssdk.services.sqs.model.Message;
5+
import software.amazon.awssdk.services.sqs.model.SendMessageRequest;
6+
37
import java.util.concurrent.CompletableFuture;
48
import java.util.concurrent.TimeUnit;
59
import java.util.concurrent.TimeoutException;
610

7-
import com.amazonaws.services.sqs.AmazonSQS;
8-
import com.amazonaws.services.sqs.model.Message;
9-
import com.amazonaws.services.sqs.model.SendMessageRequest;
10-
1111
public interface AmazonSQSRequester {
1212

13-
AmazonSQS getAmazonSQS();
13+
SqsClient getAmazonSQS();
1414

1515
/**
1616
* Sends a message and waits the given amount of time for
1717
* the response message.
1818
*/
19-
public Message sendMessageAndGetResponse(SendMessageRequest request,
20-
int timeout, TimeUnit unit) throws TimeoutException;
19+
public Message sendMessageAndGetResponse(SendMessageRequest request,
20+
int timeout, TimeUnit unit) throws TimeoutException;
2121

2222
/**
2323
* Sends a message and returns a <tt>CompletableFuture</tt>
2424
* that will be completed with the response message when it arrives.
2525
*/
26-
public CompletableFuture<Message> sendMessageAndGetResponseAsync(SendMessageRequest request,
27-
int timeout, TimeUnit unit);
26+
public CompletableFuture<Message> sendMessageAndGetResponseAsync(SendMessageRequest request,
27+
int timeout, TimeUnit unit);
2828

2929
public void shutdown();
3030
}

src/main/java/com/amazonaws/services/sqs/AmazonSQSRequesterClient.java

+16-14
Original file line numberDiff line numberDiff line change
@@ -11,20 +11,22 @@
1111
import java.util.concurrent.TimeoutException;
1212
import java.util.function.Consumer;
1313

14-
import com.amazonaws.services.sqs.model.CreateQueueRequest;
15-
import com.amazonaws.services.sqs.model.Message;
16-
import com.amazonaws.services.sqs.model.MessageAttributeValue;
17-
import com.amazonaws.services.sqs.model.SendMessageRequest;
1814
import com.amazonaws.services.sqs.util.Constants;
1915
import com.amazonaws.services.sqs.util.SQSMessageConsumer;
2016
import com.amazonaws.services.sqs.util.SQSQueueUtils;
17+
import software.amazon.awssdk.services.sqs.SqsClient;
18+
import software.amazon.awssdk.services.sqs.model.CreateQueueRequest;
19+
import software.amazon.awssdk.services.sqs.model.DeleteQueueRequest;
20+
import software.amazon.awssdk.services.sqs.model.Message;
21+
import software.amazon.awssdk.services.sqs.model.MessageAttributeValue;
22+
import software.amazon.awssdk.services.sqs.model.SendMessageRequest;
2123

2224
/**
2325
* Implementation of the request/response interfaces that creates a single
2426
* temporary queue for each response message.
2527
*/
2628
class AmazonSQSRequesterClient implements AmazonSQSRequester {
27-
private final AmazonSQS sqs;
29+
private final SqsClient sqs;
2830
private final String queuePrefix;
2931
private final Map<String, String> queueAttributes;
3032
private final Consumer<Exception> exceptionHandler;
@@ -33,11 +35,11 @@ class AmazonSQSRequesterClient implements AmazonSQSRequester {
3335

3436
private Runnable shutdownHook;
3537

36-
AmazonSQSRequesterClient(AmazonSQS sqs, String queuePrefix, Map<String, String> queueAttributes) {
38+
AmazonSQSRequesterClient(SqsClient sqs, String queuePrefix, Map<String, String> queueAttributes) {
3739
this(sqs, queuePrefix, queueAttributes, SQSQueueUtils.DEFAULT_EXCEPTION_HANDLER);
3840
}
3941

40-
AmazonSQSRequesterClient(AmazonSQS sqs, String queuePrefix, Map<String, String> queueAttributes,
42+
AmazonSQSRequesterClient(SqsClient sqs, String queuePrefix, Map<String, String> queueAttributes,
4143
Consumer<Exception> exceptionHandler) {
4244
this.sqs = sqs;
4345
this.queuePrefix = queuePrefix;
@@ -50,7 +52,7 @@ public void setShutdownHook(Runnable shutdownHook) {
5052
}
5153

5254
@Override
53-
public AmazonSQS getAmazonSQS() {
55+
public SqsClient getAmazonSQS() {
5456
return sqs;
5557
}
5658

@@ -62,14 +64,14 @@ public Message sendMessageAndGetResponse(SendMessageRequest request, int timeout
6264
@Override
6365
public CompletableFuture<Message> sendMessageAndGetResponseAsync(SendMessageRequest request, int timeout, TimeUnit unit) {
6466
String queueName = queuePrefix + UUID.randomUUID().toString();
65-
CreateQueueRequest createQueueRequest = new CreateQueueRequest()
66-
.withQueueName(queueName)
67-
.withAttributes(queueAttributes);
68-
String responseQueueUrl = sqs.createQueue(createQueueRequest).getQueueUrl();
67+
CreateQueueRequest createQueueRequest = CreateQueueRequest.builder()
68+
.queueName(queueName)
69+
.attributesWithStrings(queueAttributes).build();
70+
String responseQueueUrl = sqs.createQueue(createQueueRequest).queueUrl();
6971

7072
SendMessageRequest requestWithResponseUrl = SQSQueueUtils.copyWithExtraAttributes(request,
7173
Collections.singletonMap(Constants.RESPONSE_QUEUE_URL_ATTRIBUTE_NAME,
72-
new MessageAttributeValue().withDataType("String").withStringValue(responseQueueUrl)));
74+
MessageAttributeValue.builder().dataType("String").stringValue(responseQueueUrl).build()));
7375
// TODO-RS: Should be using sendMessageAsync
7476
sqs.sendMessage(requestWithResponseUrl);
7577

@@ -102,7 +104,7 @@ protected void accept(Message message) {
102104
@Override
103105
protected void runShutdownHook() {
104106
future.completeExceptionally(new TimeoutException());
105-
sqs.deleteQueue(queueUrl);
107+
sqs.deleteQueue(DeleteQueueRequest.builder().queueUrl(queueUrl).build());
106108
responseConsumers.remove(this);
107109
}
108110
}

src/main/java/com/amazonaws/services/sqs/AmazonSQSRequesterClientBuilder.java

+5-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.amazonaws.services.sqs;
22

33
import com.amazonaws.services.sqs.util.Constants;
4+
import software.amazon.awssdk.services.sqs.SqsClient;
45

56
import java.util.Collections;
67
import java.util.HashMap;
@@ -10,7 +11,7 @@
1011

1112
public class AmazonSQSRequesterClientBuilder {
1213

13-
private Optional<AmazonSQS> customSQS = Optional.empty();
14+
private Optional<SqsClient> customSQS = Optional.empty();
1415

1516
private String internalQueuePrefix = "__RequesterClientQueues__";
1617

@@ -35,15 +36,15 @@ public static AmazonSQSRequester defaultClient() {
3536
return standard().build();
3637
}
3738

38-
public Optional<AmazonSQS> getAmazonSQS() {
39+
public Optional<SqsClient> getAmazonSQS() {
3940
return customSQS;
4041
}
4142

42-
public void setAmazonSQS(AmazonSQS sqs) {
43+
public void setAmazonSQS(SqsClient sqs) {
4344
this.customSQS = Optional.of(sqs);
4445
}
4546

46-
public AmazonSQSRequesterClientBuilder withAmazonSQS(AmazonSQS sqs) {
47+
public AmazonSQSRequesterClientBuilder withAmazonSQS(SqsClient sqs) {
4748
setAmazonSQS(sqs);
4849
return this;
4950
}

src/main/java/com/amazonaws/services/sqs/AmazonSQSResponder.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
package com.amazonaws.services.sqs;
22

3-
import com.amazonaws.services.sqs.AmazonSQS;
3+
import software.amazon.awssdk.services.sqs.SqsClient;
44

55
public interface AmazonSQSResponder {
6-
7-
AmazonSQS getAmazonSQS();
6+
7+
SqsClient getAmazonSQS();
88

99
/**
1010
* Tests whether the given message was sent using

src/main/java/com/amazonaws/services/sqs/AmazonSQSResponderClient.java

+10-9
Original file line numberDiff line numberDiff line change
@@ -4,22 +4,23 @@
44
import org.apache.commons.logging.Log;
55
import org.apache.commons.logging.LogFactory;
66

7-
import com.amazonaws.services.sqs.model.MessageAttributeValue;
8-
import com.amazonaws.services.sqs.model.QueueDoesNotExistException;
9-
import com.amazonaws.services.sqs.model.SendMessageRequest;
7+
import software.amazon.awssdk.services.sqs.SqsClient;
8+
import software.amazon.awssdk.services.sqs.model.MessageAttributeValue;
9+
import software.amazon.awssdk.services.sqs.model.QueueDoesNotExistException;
10+
import software.amazon.awssdk.services.sqs.model.SendMessageRequest;
1011

1112
class AmazonSQSResponderClient implements AmazonSQSResponder {
1213

1314
private static final Log LOG = LogFactory.getLog(AmazonSQSResponderClient.class);
1415

15-
private final AmazonSQS sqs;
16+
private final SqsClient sqs;
1617

17-
public AmazonSQSResponderClient(AmazonSQS sqs) {
18+
public AmazonSQSResponderClient(SqsClient sqs) {
1819
this.sqs = sqs;
1920
}
2021

2122
@Override
22-
public AmazonSQS getAmazonSQS() {
23+
public SqsClient getAmazonSQS() {
2324
return sqs;
2425
}
2526

@@ -28,10 +29,10 @@ public void sendResponseMessage(MessageContent request, MessageContent response)
2829
MessageAttributeValue attribute = request.getMessageAttributes().get(Constants.RESPONSE_QUEUE_URL_ATTRIBUTE_NAME);
2930

3031
if (attribute != null) {
31-
String replyQueueUrl = attribute.getStringValue();
32+
String replyQueueUrl = attribute.stringValue();
3233
try {
33-
SendMessageRequest responseRequest = response.toSendMessageRequest()
34-
.withQueueUrl(replyQueueUrl);
34+
SendMessageRequest responseRequest = response.toSendMessageRequest().toBuilder()
35+
.queueUrl(replyQueueUrl).build();
3536
sqs.sendMessage(responseRequest);
3637
} catch (QueueDoesNotExistException e) {
3738
// Stale request, ignore

src/main/java/com/amazonaws/services/sqs/AmazonSQSResponderClientBuilder.java

+8-7
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
package com.amazonaws.services.sqs;
22

33
import com.amazonaws.services.sqs.util.Constants;
4+
import software.amazon.awssdk.services.sqs.SqsClient;
45

56
import java.util.Optional;
67

78
public class AmazonSQSResponderClientBuilder {
89

9-
private Optional<AmazonSQS> customSQS = Optional.empty();
10+
private Optional<SqsClient> customSQS = Optional.empty();
1011

1112
private String internalQueuePrefix = "__RequesterClientQueues__";
1213
private long queueHeartbeatInterval = Constants.HEARTBEAT_INTERVAL_SECONDS_DEFAULT;
@@ -18,15 +19,15 @@ public static AmazonSQSResponder defaultClient() {
1819
return standard().build();
1920
}
2021

21-
public Optional<AmazonSQS> getAmazonSQS() {
22+
public Optional<SqsClient> getAmazonSQS() {
2223
return customSQS;
2324
}
2425

25-
public void setAmazonSQS(AmazonSQS sqs) {
26+
public void setAmazonSQS(SqsClient sqs) {
2627
this.customSQS = Optional.of(sqs);
2728
}
2829

29-
public AmazonSQSResponderClientBuilder withAmazonSQS(AmazonSQS sqs) {
30+
public AmazonSQSResponderClientBuilder withAmazonSQS(SqsClient sqs) {
3031
setAmazonSQS(sqs);
3132
return this;
3233
}
@@ -65,9 +66,9 @@ public static AmazonSQSResponderClientBuilder standard() {
6566
}
6667

6768
public AmazonSQSResponder build() {
68-
AmazonSQS sqs = customSQS.orElseGet(AmazonSQSClientBuilder::defaultClient);
69-
AmazonSQS deleter = new AmazonSQSIdleQueueDeletingClient(sqs, internalQueuePrefix, queueHeartbeatInterval);
70-
AmazonSQS virtualQueuesClient = AmazonSQSVirtualQueuesClientBuilder.standard().withAmazonSQS(deleter)
69+
SqsClient sqs = customSQS.orElseGet(SqsClient::create);
70+
SqsClient deleter = new AmazonSQSIdleQueueDeletingClient(sqs, internalQueuePrefix, queueHeartbeatInterval);
71+
SqsClient virtualQueuesClient = AmazonSQSVirtualQueuesClientBuilder.standard().withAmazonSQS(deleter)
7172
.withHeartbeatIntervalSeconds(queueHeartbeatInterval).build();
7273
return new AmazonSQSResponderClient(virtualQueuesClient);
7374
}

0 commit comments

Comments
 (0)