@@ -15,7 +15,7 @@ It saves the actual payload in S3 and publishes the reference of the stored S3 o
15
15
<dependency >
16
16
<groupId >software.amazon.sns</groupId >
17
17
<artifactId >sns-extended-client</artifactId >
18
- <version >2 .0.0</version >
18
+ <version >1 .0.0</version >
19
19
<type >jar</type >
20
20
</dependency >
21
21
```
@@ -44,18 +44,20 @@ Below is the code sample that creates a sample topic and queue, subscribes the q
44
44
``` java
45
45
import com.amazon.sqs.javamessaging.AmazonSQSExtendedClient ;
46
46
import com.amazon.sqs.javamessaging.ExtendedClientConfiguration ;
47
- import software.amazon.awssdk.regions.Region ;
48
- import software.amazon.awssdk.services.s3.S3Client ;
49
- import software.amazon.awssdk.services.s3.model.CreateBucketRequest ;
50
- import software.amazon.awssdk.services.sns.SnsClient ;
51
- import software.amazon.awssdk.services.sns.model.CreateTopicRequest ;
52
- import software.amazon.awssdk.services.sns.model.PublishRequest ;
53
- import software.amazon.awssdk.services.sns.model.SetSubscriptionAttributesRequest ;
54
- import software.amazon.awssdk.services.sns.model.SubscribeRequest ;
55
- import software.amazon.awssdk.services.sqs.SqsClient ;
56
- import software.amazon.awssdk.services.sqs.model.CreateQueueRequest ;
57
- import software.amazon.awssdk.services.sqs.model.ReceiveMessageRequest ;
58
- import software.amazon.awssdk.services.sqs.model.ReceiveMessageResponse ;
47
+ import com.amazonaws.regions.Region ;
48
+ import com.amazonaws.regions.Regions ;
49
+ import com.amazonaws.services.s3.AmazonS3 ;
50
+ import com.amazonaws.services.s3.AmazonS3ClientBuilder ;
51
+ import com.amazonaws.services.sns.AmazonSNS ;
52
+ import com.amazonaws.services.sns.AmazonSNSClientBuilder ;
53
+ import com.amazonaws.services.sns.model.CreateTopicRequest ;
54
+ import com.amazonaws.services.sns.model.PublishRequest ;
55
+ import com.amazonaws.services.sns.model.SetSubscriptionAttributesRequest ;
56
+ import com.amazonaws.services.sns.util.Topics ;
57
+ import com.amazonaws.services.sqs.AmazonSQS ;
58
+ import com.amazonaws.services.sqs.AmazonSQSClientBuilder ;
59
+ import com.amazonaws.services.sqs.model.CreateQueueRequest ;
60
+ import com.amazonaws.services.sqs.model.ReceiveMessageResult ;
59
61
import software.amazon.sns.AmazonSNSExtendedClient ;
60
62
import software.amazon.sns.SNSExtendedClientConfiguration ;
61
63
@@ -65,60 +67,59 @@ public class Example {
65
67
final String BUCKET_NAME = " extended-client-bucket" ;
66
68
final String TOPIC_NAME = " extended-client-topic" ;
67
69
final String QUEUE_NAME = " extended-client-queue" ;
68
- final Region region = Region . US_WEST_2 ;
70
+ final Regions region = Regions . DEFAULT_REGION ;
69
71
70
72
// Message threshold controls the maximum message size that will be allowed to be published
71
73
// through SNS using the extended client. Payload of messages exceeding this value will be stored in
72
74
// S3. The default value of this parameter is 256 KB which is the maximum message size in SNS (and SQS).
73
75
final int EXTENDED_STORAGE_MESSAGE_SIZE_THRESHOLD = 32 ;
74
76
75
77
// Initialize SNS, SQS and S3 clients
76
- final SnsClient snsClient = SnsClient . builder (). region (region). build();
77
- final SqsClient sqsClient = SqsClient . builder (). region (region). build();
78
- final S3Client s3Client = S3Client . builder (). region (region). build();
78
+ final AmazonSNS snsClient = AmazonSNSClientBuilder . standard (). withRegion (region). build();
79
+ final AmazonSQS sqsClient = AmazonSQSClientBuilder . standard (). withRegion (region). build();
80
+ final AmazonS3 s3Client = AmazonS3ClientBuilder . standard (). withRegion (region). build();
79
81
80
82
// Create bucket, topic, queue and subscription
81
- s3Client. createBucket(CreateBucketRequest . builder() . bucket( BUCKET_NAME ) . build() );
83
+ s3Client. createBucket(BUCKET_NAME );
82
84
final String topicArn = snsClient. createTopic(
83
- CreateTopicRequest . builder (). name (TOPIC_NAME ) . build( )
84
- ). topicArn ();
85
+ new CreateTopicRequest (). withName (TOPIC_NAME )
86
+ ). getTopicArn ();
85
87
final String queueUrl = sqsClient. createQueue(
86
- CreateQueueRequest . builder (). queueName (QUEUE_NAME ) . build( )
87
- ). queueUrl ();
88
- final String subscriptionArn = snsClient . subscribe (
89
- SubscribeRequest . builder() . topicArn(topicArn) . endpoint( queueUrl) . build()
90
- ). subscriptionArn() ;
88
+ new CreateQueueRequest (). withQueueName (QUEUE_NAME )
89
+ ). getQueueUrl ();
90
+ final String subscriptionArn = Topics . subscribeQueue (
91
+ snsClient, sqsClient, topicArn, queueUrl
92
+ );
91
93
92
94
// To read message content stored in S3 transparently through SQS extended client,
93
95
// set the RawMessageDelivery subscription attribute to TRUE
94
- final SetSubscriptionAttributesRequest subscriptionAttributesRequest = SetSubscriptionAttributesRequest . builder()
95
- .subscriptionArn(subscriptionArn)
96
- .attributeName(" RawMessageDelivery" )
97
- .attributeValue(" TRUE" )
98
- .build();
96
+ final SetSubscriptionAttributesRequest subscriptionAttributesRequest = new SetSubscriptionAttributesRequest ();
97
+ subscriptionAttributesRequest. setSubscriptionArn(subscriptionArn);
98
+ subscriptionAttributesRequest. setAttributeName(" RawMessageDelivery" );
99
+ subscriptionAttributesRequest. setAttributeValue(" TRUE" );
99
100
snsClient. setSubscriptionAttributes(subscriptionAttributesRequest);
100
101
101
- // Initialize SNS extended client
102
+ // Initialize SNS extended client
102
103
// PayloadSizeThreshold triggers message content storage in S3 when the threshold is exceeded
103
104
// To store all messages content in S3, use AlwaysThroughS3 flag
104
105
final SNSExtendedClientConfiguration snsExtendedClientConfiguration = new SNSExtendedClientConfiguration ()
105
- .withPayloadSupportEnabled(s3Client, BUCKET_NAME )
106
- .withPayloadSizeThreshold(EXTENDED_STORAGE_MESSAGE_SIZE_THRESHOLD );
106
+ .withPayloadSupportEnabled(s3Client, BUCKET_NAME )
107
+ .withPayloadSizeThreshold(EXTENDED_STORAGE_MESSAGE_SIZE_THRESHOLD );
107
108
final AmazonSNSExtendedClient snsExtendedClient = new AmazonSNSExtendedClient (snsClient, snsExtendedClientConfiguration);
108
109
109
110
// Publish message via SNS with storage in S3
110
111
final String message = " This message is stored in S3 as it exceeds the threshold of 32 bytes set above." ;
111
- snsExtendedClient. publish(PublishRequest . builder() . topicArn(topicArn) . message(message) . build() );
112
+ snsExtendedClient. publish(topicArn, message);
112
113
113
114
// Initialize SQS extended client
114
115
final ExtendedClientConfiguration sqsExtendedClientConfiguration = new ExtendedClientConfiguration ()
115
- .withPayloadSupportEnabled(s3Client, BUCKET_NAME );
116
+ .withPayloadSupportEnabled(s3Client, BUCKET_NAME );
116
117
final AmazonSQSExtendedClient sqsExtendedClient =
117
- new AmazonSQSExtendedClient (sqsClient, sqsExtendedClientConfiguration);
118
+ new AmazonSQSExtendedClient (sqsClient, sqsExtendedClientConfiguration);
118
119
119
120
// Read the message from the queue
120
- final ReceiveMessageResponse response = sqsExtendedClient. receiveMessage(ReceiveMessageRequest . builder() . queueUrl(queueUrl) . build() );
121
- System . out. println(" Received message is " + response . messages (). get(0 ). body ());
121
+ final ReceiveMessageResult result = sqsExtendedClient. receiveMessage(queueUrl);
122
+ System . out. println(" Received message is " + result . getMessages (). get(0 ). getBody ());
122
123
}
123
124
}
124
125
```
0 commit comments