Skip to content

Commit 2861f22

Browse files
Upgrade to AWS SDK v2 (#6)
* Upgrade to AWS SDK v2 * update comments * update payload offloading and address comments * Versions updated in pom.xml (sqs-extended-client) * Update AmazonSNSExtendedClient.java Co-authored-by: Anurag Gumidelli <[email protected]> Co-authored-by: Anurag Gumidelli <[email protected]>
1 parent 54fa652 commit 2861f22

File tree

6 files changed

+1225
-656
lines changed

6 files changed

+1225
-656
lines changed

README.md

Lines changed: 38 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ It saves the actual payload in S3 and publishes the reference of the stored S3 o
1313
<dependency>
1414
<groupId>software.amazon.sns</groupId>
1515
<artifactId>sns-extended-client</artifactId>
16-
<version>1.0.0</version>
16+
<version>2.0.0</version>
1717
<type>jar</type>
1818
</dependency>
1919
```
@@ -31,20 +31,18 @@ Below is the code sample that creates a sample topic and queue, subscribes the q
3131
```java
3232
import com.amazon.sqs.javamessaging.AmazonSQSExtendedClient;
3333
import com.amazon.sqs.javamessaging.ExtendedClientConfiguration;
34-
import com.amazonaws.regions.Region;
35-
import com.amazonaws.regions.Regions;
36-
import com.amazonaws.services.s3.AmazonS3;
37-
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
38-
import com.amazonaws.services.sns.AmazonSNS;
39-
import com.amazonaws.services.sns.AmazonSNSClientBuilder;
40-
import com.amazonaws.services.sns.model.CreateTopicRequest;
41-
import com.amazonaws.services.sns.model.PublishRequest;
42-
import com.amazonaws.services.sns.model.SetSubscriptionAttributesRequest;
43-
import com.amazonaws.services.sns.util.Topics;
44-
import com.amazonaws.services.sqs.AmazonSQS;
45-
import com.amazonaws.services.sqs.AmazonSQSClientBuilder;
46-
import com.amazonaws.services.sqs.model.CreateQueueRequest;
47-
import com.amazonaws.services.sqs.model.ReceiveMessageResult;
34+
import software.amazon.awssdk.regions.Region;
35+
import software.amazon.awssdk.services.s3.S3Client;
36+
import software.amazon.awssdk.services.s3.model.CreateBucketRequest;
37+
import software.amazon.awssdk.services.sns.SnsClient;
38+
import software.amazon.awssdk.services.sns.model.CreateTopicRequest;
39+
import software.amazon.awssdk.services.sns.model.PublishRequest;
40+
import software.amazon.awssdk.services.sns.model.SetSubscriptionAttributesRequest;
41+
import software.amazon.awssdk.services.sns.model.SubscribeRequest;
42+
import software.amazon.awssdk.services.sqs.SqsClient;
43+
import software.amazon.awssdk.services.sqs.model.CreateQueueRequest;
44+
import software.amazon.awssdk.services.sqs.model.ReceiveMessageRequest;
45+
import software.amazon.awssdk.services.sqs.model.ReceiveMessageResponse;
4846
import software.amazon.sns.AmazonSNSExtendedClient;
4947
import software.amazon.sns.SNSExtendedClientConfiguration;
5048

@@ -54,59 +52,60 @@ public class Example {
5452
final String BUCKET_NAME = "extended-client-bucket";
5553
final String TOPIC_NAME = "extended-client-topic";
5654
final String QUEUE_NAME = "extended-client-queue";
57-
final Regions region = Regions.DEFAULT_REGION;
55+
final Region region = Region.US_WEST_2;
5856

5957
//Message threshold controls the maximum message size that will be allowed to be published
6058
//through SNS using the extended client. Payload of messages exceeding this value will be stored in
6159
//S3. The default value of this parameter is 256 KB which is the maximum message size in SNS (and SQS).
6260
final int EXTENDED_STORAGE_MESSAGE_SIZE_THRESHOLD = 32;
6361

6462
//Initialize SNS, SQS and S3 clients
65-
final AmazonSNS snsClient = AmazonSNSClientBuilder.standard().withRegion(region).build();
66-
final AmazonSQS sqsClient = AmazonSQSClientBuilder.standard().withRegion(region).build();
67-
final AmazonS3 s3Client = AmazonS3ClientBuilder.standard().withRegion(region).build();
63+
final SnsClient snsClient = SnsClient.builder().region(region).build();
64+
final SqsClient sqsClient = SqsClient.builder().region(region).build();
65+
final S3Client s3Client = S3Client.builder().region(region).build();
6866

6967
//Create bucket, topic, queue and subscription
70-
s3Client.createBucket(BUCKET_NAME);
68+
s3Client.createBucket(CreateBucketRequest.builder().bucket(BUCKET_NAME).build());
7169
final String topicArn = snsClient.createTopic(
72-
new CreateTopicRequest().withName(TOPIC_NAME)
73-
).getTopicArn();
70+
CreateTopicRequest.builder().name(TOPIC_NAME).build()
71+
).topicArn();
7472
final String queueUrl = sqsClient.createQueue(
75-
new CreateQueueRequest().withQueueName(QUEUE_NAME)
76-
).getQueueUrl();
77-
final String subscriptionArn = Topics.subscribeQueue(
78-
snsClient, sqsClient, topicArn, queueUrl
79-
);
73+
CreateQueueRequest.builder().queueName(QUEUE_NAME).build()
74+
).queueUrl();
75+
final String subscriptionArn = snsClient.subscribe(
76+
SubscribeRequest.builder().topicArn(topicArn).endpoint(queueUrl).build()
77+
).subscriptionArn();
8078

8179
//To read message content stored in S3 transparently through SQS extended client,
8280
//set the RawMessageDelivery subscription attribute to TRUE
83-
final SetSubscriptionAttributesRequest subscriptionAttributesRequest = new SetSubscriptionAttributesRequest();
84-
subscriptionAttributesRequest.setSubscriptionArn(subscriptionArn);
85-
subscriptionAttributesRequest.setAttributeName("RawMessageDelivery");
86-
subscriptionAttributesRequest.setAttributeValue("TRUE");
81+
final SetSubscriptionAttributesRequest subscriptionAttributesRequest = SetSubscriptionAttributesRequest.builder()
82+
.subscriptionArn(subscriptionArn)
83+
.attributeName("RawMessageDelivery")
84+
.attributeValue("TRUE")
85+
.build();
8786
snsClient.setSubscriptionAttributes(subscriptionAttributesRequest);
8887

89-
//Initialize SNS extended client
88+
//Initialize SNS extended client
9089
//PayloadSizeThreshold triggers message content storage in S3 when the threshold is exceeded
9190
//To store all messages content in S3, use AlwaysThroughS3 flag
9291
final SNSExtendedClientConfiguration snsExtendedClientConfiguration = new SNSExtendedClientConfiguration()
93-
.withPayloadSupportEnabled(s3Client, BUCKET_NAME)
94-
.withPayloadSizeThreshold(EXTENDED_STORAGE_MESSAGE_SIZE_THRESHOLD);
92+
.withPayloadSupportEnabled(s3Client, BUCKET_NAME)
93+
.withPayloadSizeThreshold(EXTENDED_STORAGE_MESSAGE_SIZE_THRESHOLD);
9594
final AmazonSNSExtendedClient snsExtendedClient = new AmazonSNSExtendedClient(snsClient, snsExtendedClientConfiguration);
9695

9796
//Publish message via SNS with storage in S3
9897
final String message = "This message is stored in S3 as it exceeds the threshold of 32 bytes set above.";
99-
snsExtendedClient.publish(topicArn, message);
98+
snsExtendedClient.publish(PublishRequest.builder().topicArn(topicArn).message(message).build());
10099

101100
//Initialize SQS extended client
102101
final ExtendedClientConfiguration sqsExtendedClientConfiguration = new ExtendedClientConfiguration()
103-
.withPayloadSupportEnabled(s3Client, BUCKET_NAME);
102+
.withPayloadSupportEnabled(s3Client, BUCKET_NAME);
104103
final AmazonSQSExtendedClient sqsExtendedClient =
105-
new AmazonSQSExtendedClient(sqsClient, sqsExtendedClientConfiguration);
104+
new AmazonSQSExtendedClient(sqsClient, sqsExtendedClientConfiguration);
106105

107106
//Read the message from the queue
108-
final ReceiveMessageResult result = sqsExtendedClient.receiveMessage(queueUrl);
109-
System.out.println("Received message is " + result.getMessages().get(0).getBody());
107+
final ReceiveMessageResponse response = sqsExtendedClient.receiveMessage(ReceiveMessageRequest.builder().queueUrl(queueUrl).build());
108+
System.out.println("Received message is " + response.messages().get(0).body());
110109
}
111110
}
112111
```

pom.xml

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>software.amazon.sns</groupId>
88
<artifactId>sns-extended-client</artifactId>
9-
<version>1.1.2</version>
9+
<version>2.0.0</version>
1010
<packaging>jar</packaging>
1111
<name>Amazon SNS Extended Client Library for Java</name>
1212
<description>An extension to the Amazon SNS client that enables sending messages up to 2GB via Amazon S3.
@@ -26,7 +26,7 @@
2626
</licenses>
2727

2828
<properties>
29-
<aws-java-sdk.version>1.12.261</aws-java-sdk.version>
29+
<aws-java-sdk.version>2.14.19</aws-java-sdk.version>
3030
</properties>
3131

3232
<developers>
@@ -44,22 +44,22 @@
4444
<dependency>
4545
<groupId>software.amazon.payloadoffloading</groupId>
4646
<artifactId>payloadoffloading-common</artifactId>
47-
<version>1.1.1</version>
47+
<version>2.1.2</version>
4848
</dependency>
4949
<dependency>
5050
<groupId>com.amazonaws</groupId>
5151
<artifactId>amazon-sqs-java-extended-client-lib</artifactId>
52-
<version>1.1.0</version>
52+
<version>2.0.2</version>
5353
<type>jar</type>
5454
</dependency>
5555
<dependency>
56-
<groupId>com.amazonaws</groupId>
57-
<artifactId>aws-java-sdk-sns</artifactId>
56+
<groupId>software.amazon.awssdk</groupId>
57+
<artifactId>sns</artifactId>
5858
<version>${aws-java-sdk.version}</version>
5959
</dependency>
6060
<dependency>
61-
<groupId>com.amazonaws</groupId>
62-
<artifactId>aws-java-sdk-s3</artifactId>
61+
<groupId>software.amazon.awssdk</groupId>
62+
<artifactId>s3</artifactId>
6363
<version>${aws-java-sdk.version}</version>
6464
</dependency>
6565
<dependency>
@@ -120,7 +120,7 @@
120120
<plugin>
121121
<groupId>org.apache.maven.plugins</groupId>
122122
<artifactId>maven-javadoc-plugin</artifactId>
123-
<version>2.9.1</version>
123+
<version>3.0.1</version>
124124
<executions>
125125
<execution>
126126
<id>attach-javadocs</id>

0 commit comments

Comments
 (0)