Amazon SQS是AWS消息传递服务,在某些情况下可能会处理非常大的消息,例如含有庞大附件的消息。为了处理这种情况,AWS提供了ExtendedClientConfiguration,它允许将消息体储存在Amazon S3中并在SQS中引用。
以下是使用ExtendedClientConfiguration的正确流程:
String bucketName = "example-bucket";
AmazonS3 s3Client = AmazonS3ClientBuilder.standard().build();
if (!s3Client.doesBucketExistV2(bucketName)) {
s3Client.createBucket(bucketName);
}
ExtendedClientConfiguration extendedClientConfig = new ExtendedClientConfiguration()
.withLargePayloadSupportEnabled(s3Client, bucketName, Regions.AP_SOUTHEAST_1);
AmazonSQS sqsClient = AmazonSQSClientBuilder.standard().build();
SendMessageRequest sendMessageRequest = new SendMessageRequest()
.withQueueUrl(queueUrl)
.withMessageBody("hello world")
.withDelaySeconds(5);
sqsClient.sendMessage(sendMessageRequest);
ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest(queueUrl)
.withMaxNumberOfMessages(10)
.withWaitTimeSeconds(20);
List messages = sqsClient.receiveMessage(receiveMessageRequest).getMessages();
for (Message message : messages) {
if (message.getAttributes().containsKey("ApproximateFirstReceiveTimestamp