@@ -13,7 +13,7 @@ It saves the actual payload in S3 and publishes the reference of the stored S3 o
13
13
<dependency >
14
14
<groupId >software.amazon.sns</groupId >
15
15
<artifactId >sns-extended-client</artifactId >
16
- <version >1 .0.0</version >
16
+ <version >2 .0.0</version >
17
17
<type >jar</type >
18
18
</dependency >
19
19
```
@@ -31,20 +31,18 @@ Below is the code sample that creates a sample topic and queue, subscribes the q
31
31
``` java
32
32
import com.amazon.sqs.javamessaging.AmazonSQSExtendedClient ;
33
33
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 ;
48
46
import software.amazon.sns.AmazonSNSExtendedClient ;
49
47
import software.amazon.sns.SNSExtendedClientConfiguration ;
50
48
@@ -54,59 +52,60 @@ public class Example {
54
52
final String BUCKET_NAME = " extended-client-bucket" ;
55
53
final String TOPIC_NAME = " extended-client-topic" ;
56
54
final String QUEUE_NAME = " extended-client-queue" ;
57
- final Regions region = Regions . DEFAULT_REGION ;
55
+ final Region region = Region . US_WEST_2 ;
58
56
59
57
// Message threshold controls the maximum message size that will be allowed to be published
60
58
// through SNS using the extended client. Payload of messages exceeding this value will be stored in
61
59
// S3. The default value of this parameter is 256 KB which is the maximum message size in SNS (and SQS).
62
60
final int EXTENDED_STORAGE_MESSAGE_SIZE_THRESHOLD = 32 ;
63
61
64
62
// 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();
68
66
69
67
// Create bucket, topic, queue and subscription
70
- s3Client. createBucket(BUCKET_NAME );
68
+ s3Client. createBucket(CreateBucketRequest . builder() . bucket( BUCKET_NAME ) . build() );
71
69
final String topicArn = snsClient. createTopic(
72
- new CreateTopicRequest (). withName (TOPIC_NAME )
73
- ). getTopicArn ();
70
+ CreateTopicRequest . builder (). name (TOPIC_NAME ) . build( )
71
+ ). topicArn ();
74
72
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() ;
80
78
81
79
// To read message content stored in S3 transparently through SQS extended client,
82
80
// 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();
87
86
snsClient. setSubscriptionAttributes(subscriptionAttributesRequest);
88
87
89
- // Initialize SNS extended client
88
+ // Initialize SNS extended client
90
89
// PayloadSizeThreshold triggers message content storage in S3 when the threshold is exceeded
91
90
// To store all messages content in S3, use AlwaysThroughS3 flag
92
91
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 );
95
94
final AmazonSNSExtendedClient snsExtendedClient = new AmazonSNSExtendedClient (snsClient, snsExtendedClientConfiguration);
96
95
97
96
// Publish message via SNS with storage in S3
98
97
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() );
100
99
101
100
// Initialize SQS extended client
102
101
final ExtendedClientConfiguration sqsExtendedClientConfiguration = new ExtendedClientConfiguration ()
103
- .withPayloadSupportEnabled(s3Client, BUCKET_NAME );
102
+ .withPayloadSupportEnabled(s3Client, BUCKET_NAME );
104
103
final AmazonSQSExtendedClient sqsExtendedClient =
105
- new AmazonSQSExtendedClient (sqsClient, sqsExtendedClientConfiguration);
104
+ new AmazonSQSExtendedClient (sqsClient, sqsExtendedClientConfiguration);
106
105
107
106
// 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 ());
110
109
}
111
110
}
112
111
```
0 commit comments