diff --git a/.gitignore b/.gitignore
index 2f7896d..07827cc 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,2 @@
target/
+.idea/
\ No newline at end of file
diff --git a/VERSIONING.md b/VERSIONING.md
new file mode 100644
index 0000000..d8ee950
--- /dev/null
+++ b/VERSIONING.md
@@ -0,0 +1,20 @@
+## Versioning Policy
+
+We use a three-part X.Y.Z (Major.Minor.Patch) versioning definition, as follows:
+* X (Major) version changes are significant and expected to break backwards compatibility.
+* Y (Minor) version changes are moderate changes. These include:
+ * Significant non-breaking feature additions.
+ * Any change to the version of a dependency.
+ * Possible backwards-incompatible changes. These changes will be noted and explained in detail in the release notes.
+* Z (Patch) version changes are small changes. These changes will not break backwards compatibility.
+ * Z releases will also include warning of upcoming breaking changes, whenever possible.
+
+## What this means for you
+
+We recommend running the most recent version. Here are our suggestions for managing updates:
+
+* X changes will require some effort to incorporate.
+* Y changes will not require significant effort to incorporate.
+ * If you have good unit and integration tests, these changes are generally safe to pick up automatically.
+* Z changes will not require any changes to your code. Z changes are intended to be picked up automatically.
+ * Good unit and integration tests are always recommended.
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 2ec00ac..7767eef 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
- * All service calls made using this new client object are blocking, and
- * will not return until the service call completes.
- *
- * @param sqsClient
- * The Amazon SQS client to use to connect to Amazon SQS.
- */
- public AmazonSQSExtendedClient(AmazonSQS sqsClient) {
- this(sqsClient, new ExtendedClientConfiguration());
- }
-
- /**
- * Constructs a new Amazon SQS extended client to invoke service methods on
- * Amazon SQS with extended functionality using the specified Amazon SQS
- * client object.
- *
- *
- * All service calls made using this new client object are blocking, and
- * will not return until the service call completes.
- *
- * @param sqsClient
- * The Amazon SQS client to use to connect to Amazon SQS.
- * @param extendedClientConfig
- * The extended client configuration options controlling the
- * functionality of this client.
- */
- public AmazonSQSExtendedClient(AmazonSQS sqsClient, ExtendedClientConfiguration extendedClientConfig) {
- super(sqsClient);
- this.clientConfiguration = new ExtendedClientConfiguration(extendedClientConfig);
- }
-
- /**
- *
- * Delivers a message to the specified queue and uploads the message payload
- * to Amazon S3 if necessary.
- *
- * IMPORTANT: The following list shows the characters (in Unicode)
- * allowed in your message, according to the W3C XML specification. For more
- * information, go to http://www.w3.org/TR/REC-xml/#charsets If you send any
- * characters not included in the list, your request will be rejected. #x9 |
- * #xA | #xD | [#x20 to #xD7FF] | [#xE000 to #xFFFD] | [#x10000 to #x10FFFF]
- *
- * Delivers a message to the specified queue and uploads the message payload - * to Amazon S3 if necessary. - *
- *- * IMPORTANT: The following list shows the characters (in Unicode) - * allowed in your message, according to the W3C XML specification. For more - * information, go to http://www.w3.org/TR/REC-xml/#charsets If you send any - * characters not included in the list, your request will be rejected. #x9 | - * #xA | #xD | [#x20 to #xD7FF] | [#xE000 to #xFFFD] | [#x10000 to #x10FFFF] - *
- * - * @param queueUrl - * The URL of the Amazon SQS queue to take action on. - * @param messageBody - * The message to send. For a list of allowed characters, see the - * preceding important note. - * - * @return The response from the SendMessage service method, as returned by - * AmazonSQS. - * - * @throws InvalidMessageContentsException - * @throws UnsupportedOperationException - * - * @throws AmazonClientException - * If any internal errors are encountered inside the client - * while attempting to make the request or handle the response. - * For example if a network connection is not available. - * @throws AmazonServiceException - * If an error response is returned by AmazonSQS indicating - * either a problem with the data in the request, or a server - * side issue. - */ - public SendMessageResult sendMessage(String queueUrl, String messageBody) { - SendMessageRequest sendMessageRequest = new SendMessageRequest(queueUrl, messageBody); - return sendMessage(sendMessageRequest); - } - - /** - *
- * Retrieves one or more messages, with a maximum limit of 10 messages, from
- * the specified queue. Downloads the message payloads from Amazon S3 when
- * necessary. Long poll support is enabled by using the
- * WaitTimeSeconds
parameter. For more information, see Amazon SQS Long Poll in the Amazon SQS Developer Guide .
- *
- * Short poll is the default behavior where a weighted random set of
- * machines is sampled on a ReceiveMessage
call. This means
- * only the messages on the sampled machines are returned. If the number of
- * messages in the queue is small (less than 1000), it is likely you will
- * get fewer messages than you requested per ReceiveMessage
- * call. If the number of messages in the queue is extremely small, you
- * might not receive any messages in a particular
- * ReceiveMessage
response; in which case you should repeat the
- * request.
- *
- * For each message returned, the response includes the following: - *
- * - *- * Message body - *
- *- * MD5 digest of the message body. For information about MD5, go to - * http://www.faqs.org/rfcs/rfc1321.html . - *
- *- * Message ID you received when you sent the message to the queue. - *
- *- * Receipt handle. - *
- *- * Message attributes. - *
- *- * MD5 digest of the message attributes. - *
- *- * The receipt handle is the identifier you must provide when deleting the - * message. For more information, see Queue and Message Identifiers in the Amazon SQS Developer - * Guide . - *
- *
- * You can provide the VisibilityTimeout
parameter in your
- * request, which will be applied to the messages that Amazon SQS returns in
- * the response. If you do not include the parameter, the overall visibility
- * timeout for the queue is used for the returned messages. For more
- * information, see Visibility Timeout in the Amazon SQS Developer Guide .
- *
- * NOTE: Going forward, new attributes might be added. If you are - * writing code that calls this action, we recommend that you structure your - * code so that it can handle new attributes gracefully. - *
- * - * @param receiveMessageRequest - * Container for the necessary parameters to execute the - * ReceiveMessage service method on AmazonSQS. - * - * @return The response from the ReceiveMessage service method, as returned - * by AmazonSQS. - * - * @throws OverLimitException - * - * @throws AmazonClientException - * If any internal errors are encountered inside the client - * while attempting to make the request or handle the response. - * For example if a network connection is not available. - * @throws AmazonServiceException - * If an error response is returned by AmazonSQS indicating - * either a problem with the data in the request, or a server - * side issue. - */ - public ReceiveMessageResult receiveMessage(ReceiveMessageRequest receiveMessageRequest) { - - if (receiveMessageRequest == null) { - String errorMessage = "receiveMessageRequest cannot be null."; - LOG.error(errorMessage); - throw new AmazonClientException(errorMessage); - } - - receiveMessageRequest.getRequestClientOptions().appendUserAgent(SQSExtendedClientConstants.USER_AGENT_HEADER); - - if (!clientConfiguration.isLargePayloadSupportEnabled()) { - return super.receiveMessage(receiveMessageRequest); - } - - if (!receiveMessageRequest.getMessageAttributeNames().contains(SQSExtendedClientConstants.RESERVED_ATTRIBUTE_NAME)) { - receiveMessageRequest.getMessageAttributeNames().add(SQSExtendedClientConstants.RESERVED_ATTRIBUTE_NAME); + private static final Log LOG = LogFactory.getLog(AmazonSQSExtendedClient.class); + private static final String USER_AGENT_HEADER = Util.getUserAgentHeader(AmazonSQSExtendedClient.class.getSimpleName()); + static final String LEGACY_RESERVED_ATTRIBUTE_NAME = "SQSLargePayloadSize"; + static final List+ * All service calls made using this new client object are blocking, and + * will not return until the service call completes. + * + * @param sqsClient + * The Amazon SQS client to use to connect to Amazon SQS. + */ + public AmazonSQSExtendedClient(AmazonSQS sqsClient) { + this(sqsClient, new ExtendedClientConfiguration()); + } + + /** + * Constructs a new Amazon SQS extended client to invoke service methods on + * Amazon SQS with extended functionality using the specified Amazon SQS + * client object. + * + *
+ * All service calls made using this new client object are blocking, and + * will not return until the service call completes. + * + * @param sqsClient + * The Amazon SQS client to use to connect to Amazon SQS. + * @param extendedClientConfig + * The extended client configuration options controlling the + * functionality of this client. + */ + public AmazonSQSExtendedClient(AmazonSQS sqsClient, ExtendedClientConfiguration extendedClientConfig) { + super(sqsClient); + this.clientConfiguration = new ExtendedClientConfiguration(extendedClientConfig); + S3Dao s3Dao = new S3Dao(clientConfiguration.getAmazonS3Client()); + this.payloadStore = new S3BackedPayloadStore(s3Dao, clientConfiguration.getS3BucketName(), + clientConfiguration.getSSEAwsKeyManagementParams()); + } + + /** + *
+ * Delivers a message to the specified queue and uploads the message payload + * to Amazon S3 if necessary. + *
+ *+ * IMPORTANT: The following list shows the characters (in Unicode) + * allowed in your message, according to the W3C XML specification. For more + * information, go to http://www.w3.org/TR/REC-xml/#charsets If you send any + * characters not included in the list, your request will be rejected. #x9 | + * #xA | #xD | [#x20 to #xD7FF] | [#xE000 to #xFFFD] | [#x10000 to #x10FFFF] + *
+ * + * IMPORTANT: The input object may be modified by the method. + * + * @param sendMessageRequest + * Container for the necessary parameters to execute the + * SendMessage service method on AmazonSQS. + * + * @return The response from the SendMessage service method, as returned by + * AmazonSQS. + * + * @throws InvalidMessageContentsException + * @throws UnsupportedOperationException + * + * @throws AmazonClientException + * If any internal errors are encountered inside the client + * while attempting to make the request or handle the response. + * For example if a network connection is not available. + * @throws AmazonServiceException + * If an error response is returned by AmazonSQS indicating + * either a problem with the data in the request, or a server + * side issue. + */ + public SendMessageResult sendMessage(SendMessageRequest sendMessageRequest) { + //TODO: Clone request since it's modified in this method and will cause issues if the client reuses request object. + if (sendMessageRequest == null) { + String errorMessage = "sendMessageRequest cannot be null."; + LOG.error(errorMessage); + throw new AmazonClientException(errorMessage); + } + + sendMessageRequest.getRequestClientOptions().appendUserAgent(USER_AGENT_HEADER); + + if (!clientConfiguration.isPayloadSupportEnabled()) { + return super.sendMessage(sendMessageRequest); + } + + if (sendMessageRequest.getMessageBody() == null || "".equals(sendMessageRequest.getMessageBody())) { + String errorMessage = "messageBody cannot be null or empty."; + LOG.error(errorMessage); + throw new AmazonClientException(errorMessage); + } + + //Check message attributes for ExtendedClient related constraints + checkMessageAttributes(sendMessageRequest.getMessageAttributes()); + + if (clientConfiguration.isAlwaysThroughS3() || isLarge(sendMessageRequest)) { + sendMessageRequest = storeMessageInS3(sendMessageRequest); + } + return super.sendMessage(sendMessageRequest); + } + + /** + *+ * Delivers a message to the specified queue and uploads the message payload + * to Amazon S3 if necessary. + *
+ *+ * IMPORTANT: The following list shows the characters (in Unicode) + * allowed in your message, according to the W3C XML specification. For more + * information, go to http://www.w3.org/TR/REC-xml/#charsets If you send any + * characters not included in the list, your request will be rejected. #x9 | + * #xA | #xD | [#x20 to #xD7FF] | [#xE000 to #xFFFD] | [#x10000 to #x10FFFF] + *
+ * + * @param queueUrl + * The URL of the Amazon SQS queue to take action on. + * @param messageBody + * The message to send. For a list of allowed characters, see the + * preceding important note. + * + * @return The response from the SendMessage service method, as returned by + * AmazonSQS. + * + * @throws InvalidMessageContentsException + * @throws UnsupportedOperationException + * + * @throws AmazonClientException + * If any internal errors are encountered inside the client + * while attempting to make the request or handle the response. + * For example if a network connection is not available. + * @throws AmazonServiceException + * If an error response is returned by AmazonSQS indicating + * either a problem with the data in the request, or a server + * side issue. + */ + public SendMessageResult sendMessage(String queueUrl, String messageBody) { + SendMessageRequest sendMessageRequest = new SendMessageRequest(queueUrl, messageBody); + return sendMessage(sendMessageRequest); + } + + /** + *
+ * Retrieves one or more messages, with a maximum limit of 10 messages, from
+ * the specified queue. Downloads the message payloads from Amazon S3 when
+ * necessary. Long poll support is enabled by using the
+ * WaitTimeSeconds
parameter. For more information, see Amazon SQS Long Poll in the Amazon SQS Developer Guide .
+ *
+ * Short poll is the default behavior where a weighted random set of
+ * machines is sampled on a ReceiveMessage
call. This means
+ * only the messages on the sampled machines are returned. If the number of
+ * messages in the queue is small (less than 1000), it is likely you will
+ * get fewer messages than you requested per ReceiveMessage
+ * call. If the number of messages in the queue is extremely small, you
+ * might not receive any messages in a particular
+ * ReceiveMessage
response; in which case you should repeat the
+ * request.
+ *
+ * For each message returned, the response includes the following: + *
+ * + *+ * Message body + *
+ *+ * MD5 digest of the message body. For information about MD5, go to + * http://www.faqs.org/rfcs/rfc1321.html . + *
+ *+ * Message ID you received when you sent the message to the queue. + *
+ *+ * Receipt handle. + *
+ *+ * Message attributes. + *
+ *+ * MD5 digest of the message attributes. + *
+ *+ * The receipt handle is the identifier you must provide when deleting the + * message. For more information, see Queue and Message Identifiers in the Amazon SQS Developer + * Guide . + *
+ *
+ * You can provide the VisibilityTimeout
parameter in your
+ * request, which will be applied to the messages that Amazon SQS returns in
+ * the response. If you do not include the parameter, the overall visibility
+ * timeout for the queue is used for the returned messages. For more
+ * information, see Visibility Timeout in the Amazon SQS Developer Guide .
+ *
+ * NOTE: Going forward, new attributes might be added. If you are + * writing code that calls this action, we recommend that you structure your + * code so that it can handle new attributes gracefully. + *
+ * + * @param receiveMessageRequest + * Container for the necessary parameters to execute the + * ReceiveMessage service method on AmazonSQS. + * + * @return The response from the ReceiveMessage service method, as returned + * by AmazonSQS. + * + * @throws OverLimitException + * + * @throws AmazonClientException + * If any internal errors are encountered inside the client + * while attempting to make the request or handle the response. + * For example if a network connection is not available. + * @throws AmazonServiceException + * If an error response is returned by AmazonSQS indicating + * either a problem with the data in the request, or a server + * side issue. + */ + public ReceiveMessageResult receiveMessage(ReceiveMessageRequest receiveMessageRequest) { + //TODO: Clone request since it's modified in this method and will cause issues if the client reuses request object. + if (receiveMessageRequest == null) { + String errorMessage = "receiveMessageRequest cannot be null."; + LOG.error(errorMessage); + throw new AmazonClientException(errorMessage); + } + + receiveMessageRequest.getRequestClientOptions().appendUserAgent(USER_AGENT_HEADER); + + if (!clientConfiguration.isPayloadSupportEnabled()) { + return super.receiveMessage(receiveMessageRequest); + } + //Remove before adding to avoid any duplicates + receiveMessageRequest.getMessageAttributeNames().removeAll(RESERVED_ATTRIBUTE_NAMES); + receiveMessageRequest.getMessageAttributeNames().addAll(RESERVED_ATTRIBUTE_NAMES); + + ReceiveMessageResult receiveMessageResult = super.receiveMessage(receiveMessageRequest); + + List
+ * Retrieves one or more messages, with a maximum limit of 10 messages, from
+ * the specified queue. Downloads the message payloads from Amazon S3 when
+ * necessary. Long poll support is enabled by using the
+ * WaitTimeSeconds
parameter. For more information, see Amazon SQS Long Poll in the Amazon SQS Developer Guide .
+ *
+ * Short poll is the default behavior where a weighted random set of
+ * machines is sampled on a ReceiveMessage
call. This means
+ * only the messages on the sampled machines are returned. If the number of
+ * messages in the queue is small (less than 1000), it is likely you will
+ * get fewer messages than you requested per ReceiveMessage
+ * call. If the number of messages in the queue is extremely small, you
+ * might not receive any messages in a particular
+ * ReceiveMessage
response; in which case you should repeat the
+ * request.
+ *
+ * For each message returned, the response includes the following: + *
+ * + *+ * Message body + *
+ *+ * MD5 digest of the message body. For information about MD5, go to + * http://www.faqs.org/rfcs/rfc1321.html . + *
+ *+ * Message ID you received when you sent the message to the queue. + *
+ *+ * Receipt handle. + *
+ *+ * Message attributes. + *
+ *+ * MD5 digest of the message attributes. + *
+ *+ * The receipt handle is the identifier you must provide when deleting the + * message. For more information, see Queue and Message Identifiers in the Amazon SQS Developer + * Guide . + *
+ *
+ * You can provide the VisibilityTimeout
parameter in your
+ * request, which will be applied to the messages that Amazon SQS returns in
+ * the response. If you do not include the parameter, the overall visibility
+ * timeout for the queue is used for the returned messages. For more
+ * information, see Visibility Timeout in the Amazon SQS Developer Guide .
+ *
+ * NOTE: Going forward, new attributes might be added. If you are + * writing code that calls this action, we recommend that you structure your + * code so that it can handle new attributes gracefully. + *
+ * + * @param queueUrl + * The URL of the Amazon SQS queue to take action on. + * + * @return The response from the ReceiveMessage service method, as returned + * by AmazonSQS. + * + * @throws OverLimitException + * + * @throws AmazonClientException + * If any internal errors are encountered inside the client + * while attempting to make the request or handle the response. + * For example if a network connection is not available. + * @throws AmazonServiceException + * If an error response is returned by AmazonSQS indicating + * either a problem with the data in the request, or a server + * side issue. + */ + public ReceiveMessageResult receiveMessage(String queueUrl) { + ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest(queueUrl); + return receiveMessage(receiveMessageRequest); + } + + /** + *
+ * Deletes the specified message from the specified queue and deletes the
+ * message payload from Amazon S3 when necessary. You specify the message by
+ * using the message's receipt handle
and not the
+ * message ID
you received when you sent the message. Even if
+ * the message is locked by another reader due to the visibility timeout
+ * setting, it is still deleted from the queue. If you leave a message in
+ * the queue for longer than the queue's configured retention period, Amazon
+ * SQS automatically deletes it.
+ *
+ * NOTE: The receipt handle is associated with a specific instance of + * receiving the message. If you receive a message more than once, the + * receipt handle you get each time you receive the message is different. + * When you request DeleteMessage, if you don't provide the most recently + * received receipt handle for the message, the request will still succeed, + * but the message might not be deleted. + *
+ *+ * IMPORTANT: It is possible you will receive a message even after + * you have deleted it. This might happen on rare occasions if one of the + * servers storing a copy of the message is unavailable when you request to + * delete the message. The copy remains on the server and might be returned + * to you again on a subsequent receive request. You should create your + * system to be idempotent so that receiving a particular message more than + * once is not a problem. + *
+ * + * @param deleteMessageRequest + * Container for the necessary parameters to execute the + * DeleteMessage service method on AmazonSQS. + * + * @return The response from the DeleteMessage service method, as returned + * by AmazonSQS. + * + * @throws ReceiptHandleIsInvalidException + * @throws InvalidIdFormatException + * + * @throws AmazonClientException + * If any internal errors are encountered inside the client + * while attempting to make the request or handle the response. + * For example if a network connection is not available. + * @throws AmazonServiceException + * If an error response is returned by AmazonSQS indicating + * either a problem with the data in the request, or a server + * side issue. + */ + public DeleteMessageResult deleteMessage(DeleteMessageRequest deleteMessageRequest) { + + if (deleteMessageRequest == null) { + String errorMessage = "deleteMessageRequest cannot be null."; + LOG.error(errorMessage); + throw new AmazonClientException(errorMessage); + } + + deleteMessageRequest.getRequestClientOptions().appendUserAgent(USER_AGENT_HEADER); + + if (!clientConfiguration.isPayloadSupportEnabled()) { + return super.deleteMessage(deleteMessageRequest); + } + + String receiptHandle = deleteMessageRequest.getReceiptHandle(); + String origReceiptHandle = receiptHandle; + + // Update original receipt handle if needed + if (isS3ReceiptHandle(receiptHandle)) { + origReceiptHandle = getOrigReceiptHandle(receiptHandle); + // Delete pay load from S3 if needed + if (clientConfiguration.doesCleanupS3Payload()) { + String messagePointer = getMessagePointerFromModifiedReceiptHandle(receiptHandle); + payloadStore.deleteOriginalPayload(messagePointer); + } + } + + deleteMessageRequest.setReceiptHandle(origReceiptHandle); + return super.deleteMessage(deleteMessageRequest); + } + + /** + *
+ * Deletes the specified message from the specified queue and deletes the
+ * message payload from Amazon S3 when necessary. You specify the message by
+ * using the message's receipt handle
and not the
+ * message ID
you received when you sent the message. Even if
+ * the message is locked by another reader due to the visibility timeout
+ * setting, it is still deleted from the queue. If you leave a message in
+ * the queue for longer than the queue's configured retention period, Amazon
+ * SQS automatically deletes it.
+ *
+ * NOTE: The receipt handle is associated with a specific instance of + * receiving the message. If you receive a message more than once, the + * receipt handle you get each time you receive the message is different. + * When you request DeleteMessage, if you don't provide the most recently + * received receipt handle for the message, the request will still succeed, + * but the message might not be deleted. + *
+ *+ * IMPORTANT: It is possible you will receive a message even after + * you have deleted it. This might happen on rare occasions if one of the + * servers storing a copy of the message is unavailable when you request to + * delete the message. The copy remains on the server and might be returned + * to you again on a subsequent receive request. You should create your + * system to be idempotent so that receiving a particular message more than + * once is not a problem. + *
+ * + * @param queueUrl + * The URL of the Amazon SQS queue to take action on. + * @param receiptHandle + * The receipt handle associated with the message to delete. + * + * @return The response from the DeleteMessage service method, as returned + * by AmazonSQS. + * + * @throws ReceiptHandleIsInvalidException + * @throws InvalidIdFormatException + * + * @throws AmazonClientException + * If any internal errors are encountered inside the client + * while attempting to make the request or handle the response. + * For example if a network connection is not available. + * @throws AmazonServiceException + * If an error response is returned by AmazonSQS indicating + * either a problem with the data in the request, or a server + * side issue. + */ + public DeleteMessageResult deleteMessage(String queueUrl, String receiptHandle) { + DeleteMessageRequest deleteMessageRequest = new DeleteMessageRequest(queueUrl, receiptHandle); + return deleteMessage(deleteMessageRequest); + } + + /** + * Simplified method form for invoking the ChangeMessageVisibility + * operation. + * + * @see #changeMessageVisibility(ChangeMessageVisibilityRequest) + */ + public ChangeMessageVisibilityResult changeMessageVisibility(String queueUrl, + String receiptHandle, + Integer visibilityTimeout) { + ChangeMessageVisibilityRequest changeMessageVisibilityRequest = + new ChangeMessageVisibilityRequest(queueUrl, receiptHandle, visibilityTimeout); + return changeMessageVisibility(changeMessageVisibilityRequest); + } + + /** + *+ * Changes the visibility timeout of a specified message in a queue to a new + * value. The maximum allowed timeout value you can set the value to is 12 + * hours. This means you can't extend the timeout of a message in an + * existing queue to more than a total visibility timeout of 12 hours. (For + * more information visibility timeout, see Visibility Timeout in the Amazon SQS Developer Guide .) + *
+ *
+ * For example, let's say you have a message and its default message
+ * visibility timeout is 30 minutes. You could call
+ * ChangeMessageVisiblity
with a value of two hours and the
+ * effective timeout would be two hours and 30 minutes. When that time comes
+ * near you could again extend the time out by calling
+ * ChangeMessageVisiblity, but this time the maximum allowed timeout would
+ * be 9 hours and 30 minutes.
+ *
+ * NOTE: There is a 120,000 limit for the number of inflight messages + * per queue. Messages are inflight after they have been received from the + * queue by a consuming component, but have not yet been deleted from the + * queue. If you reach the 120,000 limit, you will receive an OverLimit + * error message from Amazon SQS. To help avoid reaching the limit, you + * should delete the messages from the queue after they have been processed. + * You can also increase the number of queues you use to process the + * messages. + *
+ *+ * IMPORTANT:If you attempt to set the VisibilityTimeout to an amount + * more than the maximum time left, Amazon SQS returns an error. It will not + * automatically recalculate and increase the timeout to the maximum time + * remaining. + *
+ *+ * IMPORTANT:Unlike with a queue, when you change the visibility + * timeout for a specific message, that timeout value is applied immediately + * but is not saved in memory for that message. If you don't delete a + * message after it is received, the visibility timeout for the message the + * next time it is received reverts to the original timeout value, not the + * value you set with the ChangeMessageVisibility action. + *
+ * + * @param changeMessageVisibilityRequest + * Container for the necessary parameters to execute the + * ChangeMessageVisibility service method on AmazonSQS. + * + * + * @throws ReceiptHandleIsInvalidException + * @throws MessageNotInflightException + * + * @throws AmazonClientException + * If any internal errors are encountered inside the client + * while attempting to make the request or handle the response. + * For example if a network connection is not available. + * @throws AmazonServiceException + * If an error response is returned by AmazonSQS indicating + * either a problem with the data in the request, or a server + * side issue. + */ + public ChangeMessageVisibilityResult changeMessageVisibility(ChangeMessageVisibilityRequest changeMessageVisibilityRequest) + throws AmazonServiceException, AmazonClientException { + + if (isS3ReceiptHandle(changeMessageVisibilityRequest.getReceiptHandle())) { + changeMessageVisibilityRequest.setReceiptHandle( + getOrigReceiptHandle(changeMessageVisibilityRequest.getReceiptHandle())); + } + return amazonSqsToBeExtended.changeMessageVisibility(changeMessageVisibilityRequest); + } + + /** + *+ * Delivers up to ten messages to the specified queue. This is a batch + * version of SendMessage. The result of the send action on each message is + * reported individually in the response. Uploads message payloads to Amazon + * S3 when necessary. + *
+ *
+ * If the DelaySeconds
parameter is not specified for an entry,
+ * the default for the queue is used.
+ *
+ * IMPORTANT:The following list shows the characters (in Unicode) + * that are allowed in your message, according to the W3C XML specification. + * For more information, go to http://www.faqs.org/rfcs/rfc1321.html. If you + * send any characters that are not included in the list, your request will + * be rejected. #x9 | #xA | #xD | [#x20 to #xD7FF] | [#xE000 to #xFFFD] | + * [#x10000 to #x10FFFF] + *
+ *+ * IMPORTANT: Because the batch request can result in a combination + * of successful and unsuccessful actions, you should check for batch errors + * even when the call returns an HTTP status code of 200. + *
+ * IMPORTANT: The input object may be modified by the method. + *+ * NOTE:Some API actions take lists of parameters. These lists are + * specified using the param.n notation. Values of n are integers starting + * from 1. For example, a parameter list with two elements looks like this: + *
+ *
+ * &Attribute.1=this
+ *
+ * &Attribute.2=that
+ *
+ * Delivers up to ten messages to the specified queue. This is a batch + * version of SendMessage. The result of the send action on each message is + * reported individually in the response. Uploads message payloads to Amazon + * S3 when necessary. + *
+ *
+ * If the DelaySeconds
parameter is not specified for an entry,
+ * the default for the queue is used.
+ *
+ * IMPORTANT:The following list shows the characters (in Unicode) + * that are allowed in your message, according to the W3C XML specification. + * For more information, go to http://www.faqs.org/rfcs/rfc1321.html. If you + * send any characters that are not included in the list, your request will + * be rejected. #x9 | #xA | #xD | [#x20 to #xD7FF] | [#xE000 to #xFFFD] | + * [#x10000 to #x10FFFF] + *
+ *+ * IMPORTANT: Because the batch request can result in a combination + * of successful and unsuccessful actions, you should check for batch errors + * even when the call returns an HTTP status code of 200. + *
+ *+ * NOTE:Some API actions take lists of parameters. These lists are + * specified using the param.n notation. Values of n are integers starting + * from 1. For example, a parameter list with two elements looks like this: + *
+ *
+ * &Attribute.1=this
+ *
+ * &Attribute.2=that
+ *
+ * Deletes up to ten messages from the specified queue. This is a batch + * version of DeleteMessage. The result of the delete action on each message + * is reported individually in the response. Also deletes the message + * payloads from Amazon S3 when necessary. + *
+ *+ * IMPORTANT: Because the batch request can result in a combination + * of successful and unsuccessful actions, you should check for batch errors + * even when the call returns an HTTP status code of 200. + *
+ *+ * NOTE:Some API actions take lists of parameters. These lists are + * specified using the param.n notation. Values of n are integers starting + * from 1. For example, a parameter list with two elements looks like this: + *
+ *
+ * &Attribute.1=this
+ *
+ * &Attribute.2=that
+ *
- * Retrieves one or more messages, with a maximum limit of 10 messages, from
- * the specified queue. Downloads the message payloads from Amazon S3 when
- * necessary. Long poll support is enabled by using the
- * WaitTimeSeconds
parameter. For more information, see Amazon SQS Long Poll in the Amazon SQS Developer Guide .
- *
- * Short poll is the default behavior where a weighted random set of
- * machines is sampled on a ReceiveMessage
call. This means
- * only the messages on the sampled machines are returned. If the number of
- * messages in the queue is small (less than 1000), it is likely you will
- * get fewer messages than you requested per ReceiveMessage
- * call. If the number of messages in the queue is extremely small, you
- * might not receive any messages in a particular
- * ReceiveMessage
response; in which case you should repeat the
- * request.
- *
- * For each message returned, the response includes the following: - *
- * - *- * Message body - *
- *- * MD5 digest of the message body. For information about MD5, go to - * http://www.faqs.org/rfcs/rfc1321.html . - *
- *- * Message ID you received when you sent the message to the queue. - *
- *- * Receipt handle. - *
- *- * Message attributes. - *
- *- * MD5 digest of the message attributes. - *
- *- * The receipt handle is the identifier you must provide when deleting the - * message. For more information, see Queue and Message Identifiers in the Amazon SQS Developer - * Guide . - *
- *
- * You can provide the VisibilityTimeout
parameter in your
- * request, which will be applied to the messages that Amazon SQS returns in
- * the response. If you do not include the parameter, the overall visibility
- * timeout for the queue is used for the returned messages. For more
- * information, see Visibility Timeout in the Amazon SQS Developer Guide .
- *
- * NOTE: Going forward, new attributes might be added. If you are - * writing code that calls this action, we recommend that you structure your - * code so that it can handle new attributes gracefully. - *
- * - * @param queueUrl - * The URL of the Amazon SQS queue to take action on. - * - * @return The response from the ReceiveMessage service method, as returned - * by AmazonSQS. - * - * @throws OverLimitException - * - * @throws AmazonClientException - * If any internal errors are encountered inside the client - * while attempting to make the request or handle the response. - * For example if a network connection is not available. - * @throws AmazonServiceException - * If an error response is returned by AmazonSQS indicating - * either a problem with the data in the request, or a server - * side issue. - */ - public ReceiveMessageResult receiveMessage(String queueUrl) { - ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest(queueUrl); - return receiveMessage(receiveMessageRequest); - } - - /** - *
- * Deletes the specified message from the specified queue and deletes the
- * message payload from Amazon S3 when necessary. You specify the message by
- * using the message's receipt handle
and not the
- * message ID
you received when you sent the message. Even if
- * the message is locked by another reader due to the visibility timeout
- * setting, it is still deleted from the queue. If you leave a message in
- * the queue for longer than the queue's configured retention period, Amazon
- * SQS automatically deletes it.
- *
- * NOTE: The receipt handle is associated with a specific instance of - * receiving the message. If you receive a message more than once, the - * receipt handle you get each time you receive the message is different. - * When you request DeleteMessage, if you don't provide the most recently - * received receipt handle for the message, the request will still succeed, - * but the message might not be deleted. - *
- *- * IMPORTANT: It is possible you will receive a message even after - * you have deleted it. This might happen on rare occasions if one of the - * servers storing a copy of the message is unavailable when you request to - * delete the message. The copy remains on the server and might be returned - * to you again on a subsequent receive request. You should create your - * system to be idempotent so that receiving a particular message more than - * once is not a problem. - *
- * - * @param deleteMessageRequest - * Container for the necessary parameters to execute the - * DeleteMessage service method on AmazonSQS. - * - * @return The response from the DeleteMessage service method, as returned - * by AmazonSQS. - * - * @throws ReceiptHandleIsInvalidException - * @throws InvalidIdFormatException - * - * @throws AmazonClientException - * If any internal errors are encountered inside the client - * while attempting to make the request or handle the response. - * For example if a network connection is not available. - * @throws AmazonServiceException - * If an error response is returned by AmazonSQS indicating - * either a problem with the data in the request, or a server - * side issue. - */ - public DeleteMessageResult deleteMessage(DeleteMessageRequest deleteMessageRequest) { - - if (deleteMessageRequest == null) { - String errorMessage = "deleteMessageRequest cannot be null."; - LOG.error(errorMessage); - throw new AmazonClientException(errorMessage); - } - - deleteMessageRequest.getRequestClientOptions().appendUserAgent(SQSExtendedClientConstants.USER_AGENT_HEADER); - - if (!clientConfiguration.isLargePayloadSupportEnabled()) { - return super.deleteMessage(deleteMessageRequest); - } - - String receiptHandle = deleteMessageRequest.getReceiptHandle(); - String origReceiptHandle = receiptHandle; - if (isS3ReceiptHandle(receiptHandle)) { - deleteMessagePayloadFromS3(receiptHandle); - origReceiptHandle = getOrigReceiptHandle(receiptHandle); - } - deleteMessageRequest.setReceiptHandle(origReceiptHandle); - return super.deleteMessage(deleteMessageRequest); - } - - /** - *
- * Deletes the specified message from the specified queue and deletes the
- * message payload from Amazon S3 when necessary. You specify the message by
- * using the message's receipt handle
and not the
- * message ID
you received when you sent the message. Even if
- * the message is locked by another reader due to the visibility timeout
- * setting, it is still deleted from the queue. If you leave a message in
- * the queue for longer than the queue's configured retention period, Amazon
- * SQS automatically deletes it.
- *
- * NOTE: The receipt handle is associated with a specific instance of - * receiving the message. If you receive a message more than once, the - * receipt handle you get each time you receive the message is different. - * When you request DeleteMessage, if you don't provide the most recently - * received receipt handle for the message, the request will still succeed, - * but the message might not be deleted. - *
- *- * IMPORTANT: It is possible you will receive a message even after - * you have deleted it. This might happen on rare occasions if one of the - * servers storing a copy of the message is unavailable when you request to - * delete the message. The copy remains on the server and might be returned - * to you again on a subsequent receive request. You should create your - * system to be idempotent so that receiving a particular message more than - * once is not a problem. - *
- * - * @param queueUrl - * The URL of the Amazon SQS queue to take action on. - * @param receiptHandle - * The receipt handle associated with the message to delete. - * - * @return The response from the DeleteMessage service method, as returned - * by AmazonSQS. - * - * @throws ReceiptHandleIsInvalidException - * @throws InvalidIdFormatException - * - * @throws AmazonClientException - * If any internal errors are encountered inside the client - * while attempting to make the request or handle the response. - * For example if a network connection is not available. - * @throws AmazonServiceException - * If an error response is returned by AmazonSQS indicating - * either a problem with the data in the request, or a server - * side issue. - */ - public DeleteMessageResult deleteMessage(String queueUrl, String receiptHandle) { - DeleteMessageRequest deleteMessageRequest = new DeleteMessageRequest(queueUrl, receiptHandle); - return deleteMessage(deleteMessageRequest); - } - - /** - * Simplified method form for invoking the ChangeMessageVisibility - * operation. - * - * @see #changeMessageVisibility(ChangeMessageVisibilityRequest) - */ - public ChangeMessageVisibilityResult changeMessageVisibility(String queueUrl, - String receiptHandle, - Integer visibilityTimeout) { - ChangeMessageVisibilityRequest changeMessageVisibilityRequest = - new ChangeMessageVisibilityRequest(queueUrl, receiptHandle, visibilityTimeout); - return changeMessageVisibility(changeMessageVisibilityRequest); - } - - /** - *- * Changes the visibility timeout of a specified message in a queue to a new - * value. The maximum allowed timeout value you can set the value to is 12 - * hours. This means you can't extend the timeout of a message in an - * existing queue to more than a total visibility timeout of 12 hours. (For - * more information visibility timeout, see Visibility Timeout in the Amazon SQS Developer Guide .) - *
- *
- * For example, let's say you have a message and its default message
- * visibility timeout is 30 minutes. You could call
- * ChangeMessageVisiblity
with a value of two hours and the
- * effective timeout would be two hours and 30 minutes. When that time comes
- * near you could again extend the time out by calling
- * ChangeMessageVisiblity, but this time the maximum allowed timeout would
- * be 9 hours and 30 minutes.
- *
- * NOTE: There is a 120,000 limit for the number of inflight messages - * per queue. Messages are inflight after they have been received from the - * queue by a consuming component, but have not yet been deleted from the - * queue. If you reach the 120,000 limit, you will receive an OverLimit - * error message from Amazon SQS. To help avoid reaching the limit, you - * should delete the messages from the queue after they have been processed. - * You can also increase the number of queues you use to process the - * messages. - *
- *- * IMPORTANT:If you attempt to set the VisibilityTimeout to an amount - * more than the maximum time left, Amazon SQS returns an error. It will not - * automatically recalculate and increase the timeout to the maximum time - * remaining. - *
- *- * IMPORTANT:Unlike with a queue, when you change the visibility - * timeout for a specific message, that timeout value is applied immediately - * but is not saved in memory for that message. If you don't delete a - * message after it is received, the visibility timeout for the message the - * next time it is received reverts to the original timeout value, not the - * value you set with the ChangeMessageVisibility action. - *
- * - * @param changeMessageVisibilityRequest - * Container for the necessary parameters to execute the - * ChangeMessageVisibility service method on AmazonSQS. - * - * - * @throws ReceiptHandleIsInvalidException - * @throws MessageNotInflightException - * - * @throws AmazonClientException - * If any internal errors are encountered inside the client - * while attempting to make the request or handle the response. - * For example if a network connection is not available. - * @throws AmazonServiceException - * If an error response is returned by AmazonSQS indicating - * either a problem with the data in the request, or a server - * side issue. - */ - public ChangeMessageVisibilityResult changeMessageVisibility(ChangeMessageVisibilityRequest changeMessageVisibilityRequest) - throws AmazonServiceException, AmazonClientException { - - if (isS3ReceiptHandle(changeMessageVisibilityRequest.getReceiptHandle())) { - changeMessageVisibilityRequest.setReceiptHandle( - getOrigReceiptHandle(changeMessageVisibilityRequest.getReceiptHandle())); - } - return amazonSqsToBeExtended.changeMessageVisibility(changeMessageVisibilityRequest); - } - - /** - *- * Delivers up to ten messages to the specified queue. This is a batch - * version of SendMessage. The result of the send action on each message is - * reported individually in the response. Uploads message payloads to Amazon - * S3 when necessary. - *
- *
- * If the DelaySeconds
parameter is not specified for an entry,
- * the default for the queue is used.
- *
- * IMPORTANT:The following list shows the characters (in Unicode) - * that are allowed in your message, according to the W3C XML specification. - * For more information, go to http://www.faqs.org/rfcs/rfc1321.html. If you - * send any characters that are not included in the list, your request will - * be rejected. #x9 | #xA | #xD | [#x20 to #xD7FF] | [#xE000 to #xFFFD] | - * [#x10000 to #x10FFFF] - *
- *- * IMPORTANT: Because the batch request can result in a combination - * of successful and unsuccessful actions, you should check for batch errors - * even when the call returns an HTTP status code of 200. - *
- * IMPORTANT: The input object may be modified by the method. - *- * NOTE:Some API actions take lists of parameters. These lists are - * specified using the param.n notation. Values of n are integers starting - * from 1. For example, a parameter list with two elements looks like this: - *
- *
- * &Attribute.1=this
- *
- * &Attribute.2=that
- *
- * Delivers up to ten messages to the specified queue. This is a batch - * version of SendMessage. The result of the send action on each message is - * reported individually in the response. Uploads message payloads to Amazon - * S3 when necessary. - *
- *
- * If the DelaySeconds
parameter is not specified for an entry,
- * the default for the queue is used.
- *
- * IMPORTANT:The following list shows the characters (in Unicode) - * that are allowed in your message, according to the W3C XML specification. - * For more information, go to http://www.faqs.org/rfcs/rfc1321.html. If you - * send any characters that are not included in the list, your request will - * be rejected. #x9 | #xA | #xD | [#x20 to #xD7FF] | [#xE000 to #xFFFD] | - * [#x10000 to #x10FFFF] - *
- *- * IMPORTANT: Because the batch request can result in a combination - * of successful and unsuccessful actions, you should check for batch errors - * even when the call returns an HTTP status code of 200. - *
- *- * NOTE:Some API actions take lists of parameters. These lists are - * specified using the param.n notation. Values of n are integers starting - * from 1. For example, a parameter list with two elements looks like this: - *
- *
- * &Attribute.1=this
- *
- * &Attribute.2=that
- *
- * Deletes up to ten messages from the specified queue. This is a batch - * version of DeleteMessage. The result of the delete action on each message - * is reported individually in the response. Also deletes the message - * payloads from Amazon S3 when necessary. - *
- *- * IMPORTANT: Because the batch request can result in a combination - * of successful and unsuccessful actions, you should check for batch errors - * even when the call returns an HTTP status code of 200. - *
- *- * NOTE:Some API actions take lists of parameters. These lists are - * specified using the param.n notation. Values of n are integers starting - * from 1. For example, a parameter list with two elements looks like this: - *
- *
- * &Attribute.1=this
- *
- * &Attribute.2=that
- *
- * Deletes up to ten messages from the specified queue. This is a batch - * version of DeleteMessage. The result of the delete action on each message - * is reported individually in the response. Also deletes the message - * payloads from Amazon S3 when necessary. - *
- *- * IMPORTANT: Because the batch request can result in a combination - * of successful and unsuccessful actions, you should check for batch errors - * even when the call returns an HTTP status code of 200. - *
- *- * NOTE:Some API actions take lists of parameters. These lists are - * specified using the param.n notation. Values of n are integers starting - * from 1. For example, a parameter list with two elements looks like this: - *
- *
- * &Attribute.1=this
- *
- * &Attribute.2=that
- *
- * Changes the visibility timeout of multiple messages. This is a batch
- * version of ChangeMessageVisibility. The result of the action on each
- * message is reported individually in the response. You can send up to 10
- * ChangeMessageVisibility requests with each
- * ChangeMessageVisibilityBatch
action.
- *
- * IMPORTANT:Because the batch request can result in a combination of - * successful and unsuccessful actions, you should check for batch errors - * even when the call returns an HTTP status code of 200. - *
- *- * NOTE:Some API actions take lists of parameters. These lists are - * specified using the param.n notation. Values of n are integers starting - * from 1. For example, a parameter list with two elements looks like this: - *
- *
- * &Attribute.1=this
- *
- * &Attribute.2=that
- *
+ * Deletes up to ten messages from the specified queue. This is a batch + * version of DeleteMessage. The result of the delete action on each message + * is reported individually in the response. Also deletes the message + * payloads from Amazon S3 when necessary. + *
+ *+ * IMPORTANT: Because the batch request can result in a combination + * of successful and unsuccessful actions, you should check for batch errors + * even when the call returns an HTTP status code of 200. + *
+ *+ * NOTE:Some API actions take lists of parameters. These lists are + * specified using the param.n notation. Values of n are integers starting + * from 1. For example, a parameter list with two elements looks like this: + *
+ *
+ * &Attribute.1=this
+ *
+ * &Attribute.2=that
+ *
+ * Changes the visibility timeout of multiple messages. This is a batch
+ * version of ChangeMessageVisibility. The result of the action on each
+ * message is reported individually in the response. You can send up to 10
+ * ChangeMessageVisibility requests with each
+ * ChangeMessageVisibilityBatch
action.
+ *
+ * IMPORTANT:Because the batch request can result in a combination of + * successful and unsuccessful actions, you should check for batch errors + * even when the call returns an HTTP status code of 200. + *
+ *+ * NOTE:Some API actions take lists of parameters. These lists are + * specified using the param.n notation. Values of n are integers starting + * from 1. For example, a parameter list with two elements looks like this: + *
+ *
+ * &Attribute.1=this
+ *
+ * &Attribute.2=that
+ *
@@ -1082,284 +1086,190 @@ public ChangeMessageVisibilityBatchResult changeMessageVisibilityBatch(
* either a problem with the data in the request, or a server
* side issue.
*/
- public PurgeQueueResult purgeQueue(PurgeQueueRequest purgeQueueRequest)
- throws AmazonServiceException, AmazonClientException {
- LOG.warn("Calling purgeQueue deletes SQS messages without deleting their payload from S3.");
-
- if (purgeQueueRequest == null) {
- String errorMessage = "purgeQueueRequest cannot be null.";
- LOG.error(errorMessage);
- throw new AmazonClientException(errorMessage);
- }
-
- purgeQueueRequest.getRequestClientOptions().appendUserAgent(SQSExtendedClientConstants.USER_AGENT_HEADER);
-
- return super.purgeQueue(purgeQueueRequest);
- }
-
- private void deleteMessagePayloadFromS3(String receiptHandle) {
- String s3MsgBucketName = getFromReceiptHandleByMarker(receiptHandle,
- SQSExtendedClientConstants.S3_BUCKET_NAME_MARKER);
- String s3MsgKey = getFromReceiptHandleByMarker(receiptHandle, SQSExtendedClientConstants.S3_KEY_MARKER);
- try {
- clientConfiguration.getAmazonS3Client().deleteObject(s3MsgBucketName, s3MsgKey);
- } catch (AmazonServiceException e) {
- String errorMessage = "Failed to delete the S3 object which contains the SQS message payload. SQS message was not deleted.";
- LOG.error(errorMessage, e);
- throw new AmazonServiceException(errorMessage, e);
- } catch (AmazonClientException e) {
- String errorMessage = "Failed to delete the S3 object which contains the SQS message payload. SQS message was not deleted.";
- LOG.error(errorMessage, e);
- throw new AmazonClientException(errorMessage, e);
- }
- LOG.info("S3 object deleted, Bucket name: " + s3MsgBucketName + ", Object key: " + s3MsgKey + ".");
- }
-
- private void checkMessageAttributes(Map
@@ -111,10 +111,10 @@ public AmazonSQSExtendedClientBase(AmazonSQS sqsClient) {
*
* @param sendMessageRequest Container for the necessary parameters to
* execute the SendMessage service method on AmazonSQS.
- *
+ *
* @return The response from the SendMessage service method, as returned
* by AmazonSQS.
- *
+ *
* @throws InvalidMessageContentsException
* @throws UnsupportedOperationException
*
@@ -126,11 +126,11 @@ public AmazonSQSExtendedClientBase(AmazonSQS sqsClient) {
* If an error response is returned by AmazonSQS indicating
* either a problem with the data in the request, or a server side issue.
*/
- public SendMessageResult sendMessage(SendMessageRequest sendMessageRequest) {
- return amazonSqsToBeExtended.sendMessage(sendMessageRequest);
- }
+ public SendMessageResult sendMessage(SendMessageRequest sendMessageRequest) {
+ return amazonSqsToBeExtended.sendMessage(sendMessageRequest);
+ }
- /**
+ /**
*
* Retrieves one or more messages, with a maximum limit of 10 messages,
* from the specified queue. Long poll support is enabled by using the
@@ -152,7 +152,7 @@ public SendMessageResult sendMessage(SendMessageRequest sendMessageRequest) {
*
* For each message returned, the response includes the following:
*
* Message body
@@ -180,7 +180,7 @@ public SendMessageResult sendMessage(SendMessageRequest sendMessageRequest) {
* MD5 digest of the message attributes.
*
* The receipt handle is the identifier you must provide when deleting
@@ -205,10 +205,10 @@ public SendMessageResult sendMessage(SendMessageRequest sendMessageRequest) {
*
* @param receiveMessageRequest Container for the necessary parameters to
* execute the ReceiveMessage service method on AmazonSQS.
- *
+ *
* @return The response from the ReceiveMessage service method, as
* returned by AmazonSQS.
- *
+ *
* @throws OverLimitException
*
* @throws AmazonClientException
@@ -219,9 +219,9 @@ public SendMessageResult sendMessage(SendMessageRequest sendMessageRequest) {
* If an error response is returned by AmazonSQS indicating
* either a problem with the data in the request, or a server side issue.
*/
- public ReceiveMessageResult receiveMessage(ReceiveMessageRequest receiveMessageRequest) {
- return amazonSqsToBeExtended.receiveMessage(receiveMessageRequest);
- }
+ public ReceiveMessageResult receiveMessage(ReceiveMessageRequest receiveMessageRequest) {
+ return amazonSqsToBeExtended.receiveMessage(receiveMessageRequest);
+ }
/**
*
@@ -256,7 +256,7 @@ public ReceiveMessageResult receiveMessage(ReceiveMessageRequest receiveMessageR
*
* @return The response from the DeleteMessage service method, as returned
* by AmazonSQS.
- *
+ *
* @throws ReceiptHandleIsInvalidException
* @throws InvalidIdFormatException
*
@@ -268,1787 +268,1787 @@ public ReceiveMessageResult receiveMessage(ReceiveMessageRequest receiveMessageR
* If an error response is returned by AmazonSQS indicating
* either a problem with the data in the request, or a server side issue.
*/
- public DeleteMessageResult deleteMessage(DeleteMessageRequest deleteMessageRequest) {
- return amazonSqsToBeExtended.deleteMessage(deleteMessageRequest);
- }
-
- /**
- *
- * Delivers a message to the specified queue. With Amazon SQS, you now have
- * the ability to send large payload messages that are up to 256KB (262,144
- * bytes) in size. To send large payloads, you must use an AWS SDK that
- * supports SigV4 signing. To verify whether SigV4 is supported for an AWS
- * SDK, check the SDK release notes.
- *
- * IMPORTANT: The following list shows the characters (in Unicode)
- * allowed in your message, according to the W3C XML specification. For more
- * information, go to http://www.w3.org/TR/REC-xml/#charsets If you send any
- * characters not included in the list, your request will be rejected. #x9 |
- * #xA | #xD | [#x20 to #xD7FF] | [#xE000 to #xFFFD] | [#x10000 to #x10FFFF]
- *
- * Retrieves one or more messages, with a maximum limit of 10 messages, from
- * the specified queue. Long poll support is enabled by using the
- *
- * Short poll is the default behavior where a weighted random set of
- * machines is sampled on a
- * For each message returned, the response includes the following:
- *
- * Message body
- *
- * MD5 digest of the message body. For information about MD5, go to
- * http://www.faqs.org/rfcs/rfc1321.html .
- *
- * Message ID you received when you sent the message to the queue.
- *
- * Receipt handle.
- *
- * Message attributes.
- *
- * MD5 digest of the message attributes.
- *
- * The receipt handle is the identifier you must provide when deleting the
- * message. For more information, see Queue and Message Identifiers in the Amazon SQS Developer
- * Guide .
- *
- * You can provide the
- * NOTE: Going forward, new attributes might be added. If you are
- * writing code that calls this action, we recommend that you structure your
- * code so that it can handle new attributes gracefully.
- *
- * Deletes the specified message from the specified queue. You specify the
- * message by using the message's
- * NOTE: The receipt handle is associated with a specific instance of
- * receiving the message. If you receive a message more than once, the
- * receipt handle you get each time you receive the message is different.
- * When you request DeleteMessage, if you don't provide the most recently
- * received receipt handle for the message, the request will still succeed,
- * but the message might not be deleted.
- *
- * IMPORTANT: It is possible you will receive a message even after
- * you have deleted it. This might happen on rare occasions if one of the
- * servers storing a copy of the message is unavailable when you request to
- * delete the message. The copy remains on the server and might be returned
- * to you again on a subsequent receive request. You should create your
- * system to be idempotent so that receiving a particular message more than
- * once is not a problem.
- *
- * Sets the value of one or more queue attributes. When you change a queue's
- * attributes, the change can take up to 60 seconds for most of the
- * attributes to propagate throughout the SQS system. Changes made to the
- *
- * NOTE:Going forward, new attributes might be added. If you are
- * writing code that calls this action, we recommend that you structure your
- * code so that it can handle new attributes gracefully.
- *
- * Changes the visibility timeout of multiple messages. This is a batch
- * version of ChangeMessageVisibility. The result of the action on each
- * message is reported individually in the response. You can send up to 10
- * ChangeMessageVisibility requests with each
- *
- * IMPORTANT:Because the batch request can result in a combination of
- * successful and unsuccessful actions, you should check for batch errors
- * even when the call returns an HTTP status code of 200.
- *
- * NOTE:Some API actions take lists of parameters. These lists are
- * specified using the param.n notation. Values of n are integers starting
- * from 1. For example, a parameter list with two elements looks like this:
- *
- *
- *
- * Changes the visibility timeout of a specified message in a queue to a new
- * value. The maximum allowed timeout value you can set the value to is 12
- * hours. This means you can't extend the timeout of a message in an
- * existing queue to more than a total visibility timeout of 12 hours. (For
- * more information visibility timeout, see Visibility Timeout in the Amazon SQS Developer Guide .)
- *
- * For example, let's say you have a message and its default message
- * visibility timeout is 30 minutes. You could call
- *
- * NOTE: There is a 120,000 limit for the number of inflight messages
- * per queue. Messages are inflight after they have been received from the
- * queue by a consuming component, but have not yet been deleted from the
- * queue. If you reach the 120,000 limit, you will receive an OverLimit
- * error message from Amazon SQS. To help avoid reaching the limit, you
- * should delete the messages from the queue after they have been processed.
- * You can also increase the number of queues you use to process the
- * messages.
- *
- * IMPORTANT:If you attempt to set the VisibilityTimeout to an amount
- * more than the maximum time left, Amazon SQS returns an error. It will not
- * automatically recalculate and increase the timeout to the maximum time
- * remaining.
- *
- * IMPORTANT:Unlike with a queue, when you change the visibility
- * timeout for a specific message, that timeout value is applied immediately
- * but is not saved in memory for that message. If you don't delete a
- * message after it is received, the visibility timeout for the message the
- * next time it is received reverts to the original timeout value, not the
- * value you set with the ChangeMessageVisibility action.
- *
- * Returns the URL of an existing queue. This action provides a simple way
- * to retrieve the URL of an Amazon SQS queue.
- *
- * To access a queue that belongs to another AWS account, use the
- *
- * Revokes any permissions in the queue policy that matches the specified
- *
- * Gets attributes for the specified queue. The following attributes are
- * supported:
- *
*
* WaitTimeSeconds
parameter. For more information, see Amazon SQS Long Poll in the Amazon SQS Developer Guide .
- * ReceiveMessage
call. This means
- * only the messages on the sampled machines are returned. If the number of
- * messages in the queue is small (less than 1000), it is likely you will
- * get fewer messages than you requested per ReceiveMessage
- * call. If the number of messages in the queue is extremely small, you
- * might not receive any messages in a particular
- * ReceiveMessage
response; in which case you should repeat the
- * request.
- *
- *
- * VisibilityTimeout
parameter in your
- * request, which will be applied to the messages that Amazon SQS returns in
- * the response. If you do not include the parameter, the overall visibility
- * timeout for the queue is used for the returned messages. For more
- * information, see Visibility Timeout in the Amazon SQS Developer Guide .
- * receipt handle
and not the
- * message ID
you received when you sent the message. Even if
- * the message is locked by another reader due to the visibility timeout
- * setting, it is still deleted from the queue. If you leave a message in
- * the queue for longer than the queue's configured retention period, Amazon
- * SQS automatically deletes it.
- * MessageRetentionPeriod
attribute can take up to 15 minutes.
- * ChangeMessageVisibilityBatch
action.
- * &Attribute.1=this
- * &Attribute.2=that
- * ChangeMessageVisiblity
with a value of two hours and the
- * effective timeout would be two hours and 30 minutes. When that time comes
- * near you could again extend the time out by calling
- * ChangeMessageVisiblity, but this time the maximum allowed timeout would
- * be 9 hours and 30 minutes.
- * QueueOwnerAWSAccountId
parameter to specify the account ID
- * of the queue's owner. The queue's owner must grant you permission to
- * access the queue. For more information about shared queue access, see
- * AddPermission or go to Shared Queues in the Amazon SQS Developer Guide .
- * Label
parameter. Only the owner of the queue can remove
- * permissions.
- *
- *
- *
- * All
- returns all values.ApproximateNumberOfMessages
- returns the approximate
- * number of visible messages in a queue. For more information, see Resources Required to Process Messages in the Amazon SQS
- * Developer Guide .ApproximateNumberOfMessagesNotVisible
- returns the
- * approximate number of messages that are not timed-out and not deleted.
- * For more information, see Resources Required to Process Messages in the Amazon SQS
- * Developer Guide .VisibilityTimeout
- returns the visibility timeout for
- * the queue. For more information about visibility timeout, see Visibility Timeout in the Amazon SQS Developer Guide .CreatedTimestamp
- returns the time when the queue was
- * created (epoch time in seconds).LastModifiedTimestamp
- returns the time when the queue
- * was last changed (epoch time in seconds).Policy
- returns the queue's policy.MaximumMessageSize
- returns the limit of how many bytes
- * a message can contain before Amazon SQS rejects it.MessageRetentionPeriod
- returns the number of seconds
- * Amazon SQS retains a message.QueueArn
- returns the queue's Amazon resource name
- * (ARN).ApproximateNumberOfMessagesDelayed
- returns the
- * approximate number of messages that are pending to be added to the queue.
- * DelaySeconds
- returns the default delay on the queue in
- * seconds.ReceiveMessageWaitTimeSeconds
- returns the time for
- * which a ReceiveMessage call will wait for a message to arrive.RedrivePolicy
- returns the parameters for dead letter
- * queue functionality of the source queue. For more information about
- * RedrivePolicy and dead letter queues, see Using Amazon SQS Dead Letter Queues in the Amazon SQS Developer
- * Guide .
- * NOTE:Going forward, new attributes might be added. If you are - * writing code that calls this action, we recommend that you structure your - * code so that it can handle new attributes gracefully. - *
- *- * NOTE:Some API actions take lists of parameters. These lists are - * specified using the param.n notation. Values of n are integers starting - * from 1. For example, a parameter list with two elements looks like this: - *
- *
- * &Attribute.1=this
- *
- * &Attribute.2=that
- *
- * Delivers up to ten messages to the specified queue. This is a batch - * version of SendMessage. The result of the send action on each message is - * reported individually in the response. The maximum allowed individual - * message size is 256 KB (262,144 bytes). - *
- *- * The maximum total payload size (i.e., the sum of all a batch's individual - * message lengths) is also 256 KB (262,144 bytes). - *
- *
- * If the DelaySeconds
parameter is not specified for an entry,
- * the default for the queue is used.
- *
- * IMPORTANT:The following list shows the characters (in Unicode) - * that are allowed in your message, according to the W3C XML specification. - * For more information, go to http://www.faqs.org/rfcs/rfc1321.html. If you - * send any characters that are not included in the list, your request will - * be rejected. #x9 | #xA | #xD | [#x20 to #xD7FF] | [#xE000 to #xFFFD] | - * [#x10000 to #x10FFFF] - *
- *- * IMPORTANT: Because the batch request can result in a combination - * of successful and unsuccessful actions, you should check for batch errors - * even when the call returns an HTTP status code of 200. - *
- *- * NOTE:Some API actions take lists of parameters. These lists are - * specified using the param.n notation. Values of n are integers starting - * from 1. For example, a parameter list with two elements looks like this: - *
- *
- * &Attribute.1=this
- *
- * &Attribute.2=that
- *
- * Deletes the messages in a queue specified by the queue URL . - *
- *- * IMPORTANT:When you use the PurgeQueue API, the deleted messages in - * the queue cannot be retrieved. - *
- *
- * When you purge a queue, the message deletion process takes up to 60
- * seconds. All messages sent to the queue before calling
- * PurgeQueue
will be deleted; messages sent to the queue while
- * it is being purged may be deleted. While the queue is being purged,
- * messages sent to the queue before PurgeQueue
was called may
- * be received, but will be deleted within the next minute.
- *
- * Returns a list of your queues that have the RedrivePolicy queue attribute - * configured with a dead letter queue. - *
- *- * For more information about using dead letter queues, see Using Amazon SQS Dead Letter Queues . - *
- * - * @param listDeadLetterSourceQueuesRequest - * Container for the necessary parameters to execute the - * ListDeadLetterSourceQueues service method on AmazonSQS. - * - * @return The response from the ListDeadLetterSourceQueues service method, - * as returned by AmazonSQS. - * - * @throws QueueDoesNotExistException - * - * @throws AmazonClientException - * If any internal errors are encountered inside the client - * while attempting to make the request or handle the response. - * For example if a network connection is not available. - * @throws AmazonServiceException - * If an error response is returned by AmazonSQS indicating - * either a problem with the data in the request, or a server - * side issue. - */ - public ListDeadLetterSourceQueuesResult listDeadLetterSourceQueues( - ListDeadLetterSourceQueuesRequest listDeadLetterSourceQueuesRequest) throws AmazonServiceException, - AmazonClientException { - - return amazonSqsToBeExtended.listDeadLetterSourceQueues(listDeadLetterSourceQueuesRequest); - } - - /** - *- * Deletes the queue specified by the queue URL , regardless of - * whether the queue is empty. If the specified queue does not exist, Amazon - * SQS returns a successful response. - *
- *- * IMPORTANT: Use DeleteQueue with care; once you delete your queue, - * any messages in the queue are no longer available. - *
- *- * When you delete a queue, the deletion process takes up to 60 seconds. - * Requests you send involving that queue during the 60 seconds might - * succeed. For example, a SendMessage request might succeed, but after the - * 60 seconds, the queue and that message you sent no longer exist. Also, - * when you delete a queue, you must wait at least 60 seconds before - * creating a queue with the same name. - *
- *- * We reserve the right to delete queues that have had no activity for more - * than 30 days. For more information, see How Amazon SQS Queues Work in the Amazon SQS Developer - * Guide . - *
- * - * @param deleteQueueRequest - * Container for the necessary parameters to execute the - * DeleteQueue service method on AmazonSQS. - * - * - * - * @throws AmazonClientException - * If any internal errors are encountered inside the client - * while attempting to make the request or handle the response. - * For example if a network connection is not available. - * @throws AmazonServiceException - * If an error response is returned by AmazonSQS indicating - * either a problem with the data in the request, or a server - * side issue. - */ - public DeleteQueueResult deleteQueue(DeleteQueueRequest deleteQueueRequest) - throws AmazonServiceException, AmazonClientException { - - return amazonSqsToBeExtended.deleteQueue(deleteQueueRequest); - } - - /** - *
- * Returns a list of your queues. The maximum number of queues that can be
- * returned is 1000. If you specify a value for the optional
- * QueueNamePrefix
parameter, only queues with a name beginning
- * with the specified value are returned.
- *
- * Deletes up to ten messages from the specified queue. This is a batch - * version of DeleteMessage. The result of the delete action on each message - * is reported individually in the response. - *
- *- * IMPORTANT: Because the batch request can result in a combination - * of successful and unsuccessful actions, you should check for batch errors - * even when the call returns an HTTP status code of 200. - *
- *- * NOTE:Some API actions take lists of parameters. These lists are - * specified using the param.n notation. Values of n are integers starting - * from 1. For example, a parameter list with two elements looks like this: - *
- *
- * &Attribute.1=this
- *
- * &Attribute.2=that
- *
- * Creates a new queue, or returns the URL of an existing one. When you
- * request CreateQueue
, you provide a name for the queue. To
- * successfully create a new queue, you must provide a name that is unique
- * within the scope of your own queues.
- *
- * NOTE: If you delete a queue, you must wait at least 60 seconds - * before creating a queue with the same name. - *
- *- * You may pass one or more attributes in the request. If you do not provide - * a value for any attribute, the queue will have the default value for that - * attribute. Permitted attributes are the same that can be set using - * SetQueueAttributes. - *
- *- * NOTE: Use GetQueueUrl to get a queue's URL. GetQueueUrl requires - * only the QueueName parameter. - *
- *
- * If you provide the name of an existing queue, along with the exact names
- * and values of all the queue's attributes, CreateQueue
- * returns the queue URL for the existing queue. If the queue name,
- * attribute names, or attribute values do not match an existing queue,
- * CreateQueue
returns an error.
- *
- * NOTE:Some API actions take lists of parameters. These lists are - * specified using the param.n notation. Values of n are integers starting - * from 1. For example, a parameter list with two elements looks like this: - *
- *
- * &Attribute.1=this
- *
- * &Attribute.2=that
- *
- * Adds a permission to a queue for a specific - * principal . This allows for sharing access to the queue. - *
- *- * When you create a queue, you have full control access rights for the - * queue. Only you (as owner of the queue) can grant or deny permissions to - * the queue. For more information about these permissions, see Shared Queues in the Amazon SQS Developer Guide . - *
- *- * NOTE: AddPermission writes an Amazon SQS-generated policy. If you - * want to write your own policy, use SetQueueAttributes to upload your - * policy. For more information about writing your own policy, see Using The - * Access Policy Language in the Amazon SQS Developer Guide. - *
- *- * NOTE:Some API actions take lists of parameters. These lists are - * specified using the param.n notation. Values of n are integers starting - * from 1. For example, a parameter list with two elements looks like this: - *
- *
- * &Attribute.1=this
- *
- * &Attribute.2=that
- *
- * Returns a list of your queues. The maximum number of queues that can be
- * returned is 1000. If you specify a value for the optional
- * QueueNamePrefix
parameter, only queues with a name beginning
- * with the specified value are returned.
- *
- * Sets the value of one or more queue attributes. When you change a queue's
- * attributes, the change can take up to 60 seconds for most of the
- * attributes to propagate throughout the SQS system. Changes made to the
- * MessageRetentionPeriod
attribute can take up to 15 minutes.
- *
- * NOTE:Going forward, new attributes might be added. If you are - * writing code that calls this action, we recommend that you structure your - * code so that it can handle new attributes gracefully. - *
- * - * @param queueUrl - * The URL of the Amazon SQS queue to take action on. - * @param attributes - * A map of attributes to set. - *
- * The following lists the names, descriptions, and values of the
- * special request parameters the SetQueueAttributes
- * action uses:
- *
- *
DelaySeconds
- The time in seconds that the
- * delivery of all messages in the queue will be delayed. An
- * integer from 0 to 900 (15 minutes). The default for this
- * attribute is 0 (zero).MaximumMessageSize
- The limit of how many
- * bytes a message can contain before Amazon SQS rejects it. An
- * integer from 1024 bytes (1 KiB) up to 262144 bytes (256 KiB).
- * The default for this attribute is 262144 (256 KiB).MessageRetentionPeriod
- The number of
- * seconds Amazon SQS retains a message. Integer representing
- * seconds, from 60 (1 minute) to 1209600 (14 days). The default
- * for this attribute is 345600 (4 days).Policy
- The queue's policy. A valid AWS
- * policy. For more information about policy structure, see Overview of AWS IAM Policies in the Amazon IAM User
- * Guide.ReceiveMessageWaitTimeSeconds
- The time for
- * which a ReceiveMessage call will wait for a message to arrive.
- * An integer from 0 to 20 (seconds). The default for this
- * attribute is 0.VisibilityTimeout
- The visibility timeout
- * for the queue. An integer from 0 to 43200 (12 hours). The
- * default for this attribute is 30. For more information about
- * visibility timeout, see Visibility Timeout in the Amazon
- * SQS Developer Guide.RedrivePolicy
- The parameters for dead
- * letter queue functionality of the source queue. For more
- * information about RedrivePolicy and dead letter queues, see
- * Using Amazon SQS Dead Letter Queues in the Amazon SQS
- * Developer Guide.
- * Changes the visibility timeout of multiple messages. This is a batch
- * version of ChangeMessageVisibility. The result of the action on each
- * message is reported individually in the response. You can send up to 10
- * ChangeMessageVisibility requests with each
- * ChangeMessageVisibilityBatch
action.
- *
- * IMPORTANT:Because the batch request can result in a combination of - * successful and unsuccessful actions, you should check for batch errors - * even when the call returns an HTTP status code of 200. - *
- *- * NOTE:Some API actions take lists of parameters. These lists are - * specified using the param.n notation. Values of n are integers starting - * from 1. For example, a parameter list with two elements looks like this: - *
- *
- * &Attribute.1=this
- *
- * &Attribute.2=that
- *
- * Changes the visibility timeout of a specified message in a queue to a new - * value. The maximum allowed timeout value you can set the value to is 12 - * hours. This means you can't extend the timeout of a message in an - * existing queue to more than a total visibility timeout of 12 hours. (For - * more information visibility timeout, see Visibility Timeout in the Amazon SQS Developer Guide .) - *
- *
- * For example, let's say you have a message and its default message
- * visibility timeout is 30 minutes. You could call
- * ChangeMessageVisiblity
with a value of two hours and the
- * effective timeout would be two hours and 30 minutes. When that time comes
- * near you could again extend the time out by calling
- * ChangeMessageVisiblity, but this time the maximum allowed timeout would
- * be 9 hours and 30 minutes.
- *
- * NOTE: There is a 120,000 limit for the number of inflight messages - * per queue. Messages are inflight after they have been received from the - * queue by a consuming component, but have not yet been deleted from the - * queue. If you reach the 120,000 limit, you will receive an OverLimit - * error message from Amazon SQS. To help avoid reaching the limit, you - * should delete the messages from the queue after they have been processed. - * You can also increase the number of queues you use to process the - * messages. - *
- *- * IMPORTANT:If you attempt to set the VisibilityTimeout to an amount - * more than the maximum time left, Amazon SQS returns an error. It will not - * automatically recalculate and increase the timeout to the maximum time - * remaining. - *
- *- * IMPORTANT:Unlike with a queue, when you change the visibility - * timeout for a specific message, that timeout value is applied immediately - * but is not saved in memory for that message. If you don't delete a - * message after it is received, the visibility timeout for the message the - * next time it is received reverts to the original timeout value, not the - * value you set with the ChangeMessageVisibility action. - *
- * - * @param queueUrl - * The URL of the Amazon SQS queue to take action on. - * @param receiptHandle - * The receipt handle associated with the message whose - * visibility timeout should be changed. This parameter is - * returned by the ReceiveMessage action. - * @param visibilityTimeout - * The new value (in seconds - from 0 to 43200 - maximum 12 - * hours) for the message's visibility timeout. - * - * @return The response from the ChangeMessageVisibility service method, as - * returned by AmazonSQS. - * - * @throws ReceiptHandleIsInvalidException - * @throws MessageNotInflightException - * - * @throws AmazonClientException - * If any internal errors are encountered inside the client - * while attempting to make the request or handle the response. - * For example if a network connection is not available. - * @throws AmazonServiceException - * If an error response is returned by AmazonSQS indicating - * either a problem with the data in the request, or a server - * side issue. - */ - public ChangeMessageVisibilityResult changeMessageVisibility(String queueUrl, String receiptHandle, Integer visibilityTimeout) - throws AmazonServiceException, AmazonClientException { - - return amazonSqsToBeExtended.changeMessageVisibility(queueUrl, receiptHandle, visibilityTimeout); - } - - /** - *- * Returns the URL of an existing queue. This action provides a simple way - * to retrieve the URL of an Amazon SQS queue. - *
- *
- * To access a queue that belongs to another AWS account, use the
- * QueueOwnerAWSAccountId
parameter to specify the account ID
- * of the queue's owner. The queue's owner must grant you permission to
- * access the queue. For more information about shared queue access, see
- * AddPermission or go to Shared Queues in the Amazon SQS Developer Guide .
- *
- * Revokes any permissions in the queue policy that matches the specified
- * Label
parameter. Only the owner of the queue can remove
- * permissions.
- *
- * Gets attributes for the specified queue. The following attributes are - * supported: - *
All
- returns all values.ApproximateNumberOfMessages
- returns the approximate
- * number of visible messages in a queue. For more information, see Resources Required to Process Messages in the Amazon SQS
- * Developer Guide .ApproximateNumberOfMessagesNotVisible
- returns the
- * approximate number of messages that are not timed-out and not deleted.
- * For more information, see Resources Required to Process Messages in the Amazon SQS
- * Developer Guide .VisibilityTimeout
- returns the visibility timeout for
- * the queue. For more information about visibility timeout, see Visibility Timeout in the Amazon SQS Developer Guide .CreatedTimestamp
- returns the time when the queue was
- * created (epoch time in seconds).LastModifiedTimestamp
- returns the time when the queue
- * was last changed (epoch time in seconds).Policy
- returns the queue's policy.MaximumMessageSize
- returns the limit of how many bytes
- * a message can contain before Amazon SQS rejects it.MessageRetentionPeriod
- returns the number of seconds
- * Amazon SQS retains a message.QueueArn
- returns the queue's Amazon resource name
- * (ARN).ApproximateNumberOfMessagesDelayed
- returns the
- * approximate number of messages that are pending to be added to the queue.
- * DelaySeconds
- returns the default delay on the queue in
- * seconds.ReceiveMessageWaitTimeSeconds
- returns the time for
- * which a ReceiveMessage call will wait for a message to arrive.RedrivePolicy
- returns the parameters for dead letter
- * queue functionality of the source queue. For more information about
- * RedrivePolicy and dead letter queues, see Using Amazon SQS Dead Letter Queues in the Amazon SQS Developer
- * Guide .- * NOTE:Going forward, new attributes might be added. If you are - * writing code that calls this action, we recommend that you structure your - * code so that it can handle new attributes gracefully. - *
- *- * NOTE:Some API actions take lists of parameters. These lists are - * specified using the param.n notation. Values of n are integers starting - * from 1. For example, a parameter list with two elements looks like this: - *
- *
- * &Attribute.1=this
- *
- * &Attribute.2=that
- *
- * Delivers up to ten messages to the specified queue. This is a batch - * version of SendMessage. The result of the send action on each message is - * reported individually in the response. The maximum allowed individual - * message size is 256 KB (262,144 bytes). - *
- *- * The maximum total payload size (i.e., the sum of all a batch's individual - * message lengths) is also 256 KB (262,144 bytes). - *
- *
- * If the DelaySeconds
parameter is not specified for an entry,
- * the default for the queue is used.
- *
- * IMPORTANT:The following list shows the characters (in Unicode) - * that are allowed in your message, according to the W3C XML specification. - * For more information, go to http://www.faqs.org/rfcs/rfc1321.html. If you - * send any characters that are not included in the list, your request will - * be rejected. #x9 | #xA | #xD | [#x20 to #xD7FF] | [#xE000 to #xFFFD] | - * [#x10000 to #x10FFFF] - *
- *- * IMPORTANT: Because the batch request can result in a combination - * of successful and unsuccessful actions, you should check for batch errors - * even when the call returns an HTTP status code of 200. - *
- *- * NOTE:Some API actions take lists of parameters. These lists are - * specified using the param.n notation. Values of n are integers starting - * from 1. For example, a parameter list with two elements looks like this: - *
- *
- * &Attribute.1=this
- *
- * &Attribute.2=that
- *
- * Deletes the queue specified by the queue URL , regardless of - * whether the queue is empty. If the specified queue does not exist, Amazon - * SQS returns a successful response. - *
- *- * IMPORTANT: Use DeleteQueue with care; once you delete your queue, - * any messages in the queue are no longer available. - *
- *- * When you delete a queue, the deletion process takes up to 60 seconds. - * Requests you send involving that queue during the 60 seconds might - * succeed. For example, a SendMessage request might succeed, but after the - * 60 seconds, the queue and that message you sent no longer exist. Also, - * when you delete a queue, you must wait at least 60 seconds before - * creating a queue with the same name. - *
- *- * We reserve the right to delete queues that have had no activity for more - * than 30 days. For more information, see How Amazon SQS Queues Work in the Amazon SQS Developer - * Guide . - *
- * - * @param queueUrl - * The URL of the Amazon SQS queue to take action on. - * - * @return The response from the DeleteQueue service method, as returned by - * AmazonSQS. - * - * - * @throws AmazonClientException - * If any internal errors are encountered inside the client - * while attempting to make the request or handle the response. - * For example if a network connection is not available. - * @throws AmazonServiceException - * If an error response is returned by AmazonSQS indicating - * either a problem with the data in the request, or a server - * side issue. - */ - public DeleteQueueResult deleteQueue(String queueUrl) throws AmazonServiceException, AmazonClientException { - - return amazonSqsToBeExtended.deleteQueue(queueUrl); - } - - /** - *
- * Returns a list of your queues. The maximum number of queues that can be
- * returned is 1000. If you specify a value for the optional
- * QueueNamePrefix
parameter, only queues with a name beginning
- * with the specified value are returned.
- *
- * Deletes up to ten messages from the specified queue. This is a batch - * version of DeleteMessage. The result of the delete action on each message - * is reported individually in the response. - *
- *- * IMPORTANT: Because the batch request can result in a combination - * of successful and unsuccessful actions, you should check for batch errors - * even when the call returns an HTTP status code of 200. - *
- *- * NOTE:Some API actions take lists of parameters. These lists are - * specified using the param.n notation. Values of n are integers starting - * from 1. For example, a parameter list with two elements looks like this: - *
- *
- * &Attribute.1=this
- *
- * &Attribute.2=that
- *
- * Creates a new queue, or returns the URL of an existing one. When you
- * request CreateQueue
, you provide a name for the queue. To
- * successfully create a new queue, you must provide a name that is unique
- * within the scope of your own queues.
- *
- * NOTE: If you delete a queue, you must wait at least 60 seconds - * before creating a queue with the same name. - *
- *- * You may pass one or more attributes in the request. If you do not provide - * a value for any attribute, the queue will have the default value for that - * attribute. Permitted attributes are the same that can be set using - * SetQueueAttributes. - *
- *- * NOTE: Use GetQueueUrl to get a queue's URL. GetQueueUrl requires - * only the QueueName parameter. - *
- *
- * If you provide the name of an existing queue, along with the exact names
- * and values of all the queue's attributes, CreateQueue
- * returns the queue URL for the existing queue. If the queue name,
- * attribute names, or attribute values do not match an existing queue,
- * CreateQueue
returns an error.
- *
- * NOTE:Some API actions take lists of parameters. These lists are - * specified using the param.n notation. Values of n are integers starting - * from 1. For example, a parameter list with two elements looks like this: - *
- *
- * &Attribute.1=this
- *
- * &Attribute.2=that
- *
- * Adds a permission to a queue for a specific - * principal . This allows for sharing access to the queue. - *
- *- * When you create a queue, you have full control access rights for the - * queue. Only you (as owner of the queue) can grant or deny permissions to - * the queue. For more information about these permissions, see Shared Queues in the Amazon SQS Developer Guide . - *
- *- * NOTE: AddPermission writes an Amazon SQS-generated policy. If you - * want to write your own policy, use SetQueueAttributes to upload your - * policy. For more information about writing your own policy, see Using The - * Access Policy Language in the Amazon SQS Developer Guide. - *
- *- * NOTE:Some API actions take lists of parameters. These lists are - * specified using the param.n notation. Values of n are integers starting - * from 1. For example, a parameter list with two elements looks like this: - *
- *
- * &Attribute.1=this
- *
- * &Attribute.2=that
- *
AliceSendMessage
). Constraints: Maximum 80
- * characters; alphanumeric characters, hyphens (-), and
- * underscores (_) are allowed.
- * @param aWSAccountIds
- * The AWS account number of the principal who will be given permission. The principal
- * must have an AWS account, but does not need to be signed up
- * for Amazon SQS. For information about locating the AWS account
- * identification, see Your AWS Identifiers in the Amazon SQS Developer
- * Guide.
- * @param actions
- * The action the client wants to allow for the specified
- * principal. The following are valid values:
- * * | SendMessage |
- * ReceiveMessage | DeleteMessage | ChangeMessageVisibility |
- * GetQueueAttributes | GetQueueUrl
. For more information about these
- * actions, see Understanding Permissions in the Amazon SQS Developer
- * Guide.
- *
- * Specifying
- * Response metadata is only cached for a limited period of time, so if you
- * need to access this extra diagnostic information for an executed request,
- * you should use this method to retrieve it as soon as possible after
- * executing the request.
- *
- * @param request
- * The originally executed request
- *
- * @return The response metadata for the specified request, or null if none
- * is available.
- */
- public ResponseMetadata getCachedResponseMetadata(AmazonWebServiceRequest request) {
-
- return amazonSqsToBeExtended.getCachedResponseMetadata(request);
- }
-
- /**
- * Overrides the default endpoint for this client ("sqs.us-east-1.amazonaws.com").
- * Callers can use this method to control which AWS region they want to work with.
- *
- * Callers can pass in just the endpoint (ex: "sqs.us-east-1.amazonaws.com") or a full
- * URL, including the protocol (ex: "sqs.us-east-1.amazonaws.com"). If the
- * protocol is not specified here, the default protocol from this client's
- * {@link ClientConfiguration} will be used, which by default is HTTPS.
- *
- * For more information on using AWS regions with the AWS SDK for Java, and
- * a complete list of all available endpoints for all AWS services, see:
- *
- * http://developer.amazonwebservices.com/connect/entry.jspa?externalID=3912
- *
- * This method is not threadsafe. An endpoint should be configured when the
- * client is created and before any service requests are made. Changing it
- * afterwards creates inevitable race conditions for any service requests in
- * transit or retrying.
- *
- * @param endpoint
- * The endpoint (ex: "sqs.us-east-1.amazonaws.com") or a full URL,
- * including the protocol (ex: "sqs.us-east-1.amazonaws.com") of
- * the region specific AWS endpoint this client will communicate
- * with.
- *
- * @throws IllegalArgumentException
- * If any problems are detected with the specified endpoint.
- */
- public void setEndpoint(String endpoint) throws IllegalArgumentException {
-
- amazonSqsToBeExtended.setEndpoint(endpoint);
-
- }
-
- /**
- * An alternative to {@link AmazonSQS#setEndpoint(String)}, sets the
- * regional endpoint for this client's service calls. Callers can use this
- * method to control which AWS region they want to work with.
- *
- * By default, all service endpoints in all regions use the https protocol.
- * To use http instead, specify it in the {@link ClientConfiguration}
- * supplied at construction.
- *
- * This method is not threadsafe. A region should be configured when the
- * client is created and before any service requests are made. Changing it
- * afterwards creates inevitable race conditions for any service requests in
- * transit or retrying.
- *
- * @param region
- * The region this client will communicate with. See
- * {@link Region#getRegion(com.amazonaws.regions.Regions)} for
- * accessing a given region.
- * @throws java.lang.IllegalArgumentException
- * If the given region is null, or if this service isn't
- * available in the given region. See
- * {@link Region#isServiceSupported(String)}
- * @see Region#getRegion(com.amazonaws.regions.Regions)
- * @see Region#createClient(Class, AWSCredentialsProvider, ClientConfiguration)
- */
- public void setRegion(Region region) throws IllegalArgumentException {
-
- amazonSqsToBeExtended.setRegion(region);
-
- }
-
- /**
- * Shuts down this client object, releasing any resources that might be held
- * open. This is an optional method, and callers are not expected to call
- * it, but can if they want to explicitly release any open resources. Once a
- * client has been shutdown, it should not be used to make any more
- * requests.
- */
- public void shutdown() {
-
- amazonSqsToBeExtended.shutdown();
- }
-
- /** {@inheritDoc} */
- @Override public ListQueueTagsResult listQueueTags(final ListQueueTagsRequest listQueueTagsRequest) {
- return amazonSqsToBeExtended.listQueueTags(listQueueTagsRequest);
- }
-
- /** {@inheritDoc} */
- @Override public ListQueueTagsResult listQueueTags(final String queueUrl) {
- return amazonSqsToBeExtended.listQueueTags(queueUrl);
- }
-
- /** {@inheritDoc} */
- @Override public TagQueueResult tagQueue(final TagQueueRequest tagQueueRequest) {
- return amazonSqsToBeExtended.tagQueue(tagQueueRequest);
- }
-
- /** {@inheritDoc} */
- @Override public TagQueueResult tagQueue(final String queueUrl, final Map
+ * Delivers a message to the specified queue. With Amazon SQS, you now have
+ * the ability to send large payload messages that are up to 256KB (262,144
+ * bytes) in size. To send large payloads, you must use an AWS SDK that
+ * supports SigV4 signing. To verify whether SigV4 is supported for an AWS
+ * SDK, check the SDK release notes.
+ *
+ * IMPORTANT: The following list shows the characters (in Unicode)
+ * allowed in your message, according to the W3C XML specification. For more
+ * information, go to http://www.w3.org/TR/REC-xml/#charsets If you send any
+ * characters not included in the list, your request will be rejected. #x9 |
+ * #xA | #xD | [#x20 to #xD7FF] | [#xE000 to #xFFFD] | [#x10000 to #x10FFFF]
+ *
+ * Retrieves one or more messages, with a maximum limit of 10 messages, from
+ * the specified queue. Long poll support is enabled by using the
+ *
+ * Short poll is the default behavior where a weighted random set of
+ * machines is sampled on a
+ * For each message returned, the response includes the following:
+ *
+ * Message body
+ *
+ * MD5 digest of the message body. For information about MD5, go to
+ * http://www.faqs.org/rfcs/rfc1321.html .
+ *
+ * Message ID you received when you sent the message to the queue.
+ *
+ * Receipt handle.
+ *
+ * Message attributes.
+ *
+ * MD5 digest of the message attributes.
+ *
+ * The receipt handle is the identifier you must provide when deleting the
+ * message. For more information, see Queue and Message Identifiers in the Amazon SQS Developer
+ * Guide .
+ *
+ * You can provide the
+ * NOTE: Going forward, new attributes might be added. If you are
+ * writing code that calls this action, we recommend that you structure your
+ * code so that it can handle new attributes gracefully.
+ *
+ * Deletes the specified message from the specified queue. You specify the
+ * message by using the message's
+ * NOTE: The receipt handle is associated with a specific instance of
+ * receiving the message. If you receive a message more than once, the
+ * receipt handle you get each time you receive the message is different.
+ * When you request DeleteMessage, if you don't provide the most recently
+ * received receipt handle for the message, the request will still succeed,
+ * but the message might not be deleted.
+ *
+ * IMPORTANT: It is possible you will receive a message even after
+ * you have deleted it. This might happen on rare occasions if one of the
+ * servers storing a copy of the message is unavailable when you request to
+ * delete the message. The copy remains on the server and might be returned
+ * to you again on a subsequent receive request. You should create your
+ * system to be idempotent so that receiving a particular message more than
+ * once is not a problem.
+ *
+ * Sets the value of one or more queue attributes. When you change a queue's
+ * attributes, the change can take up to 60 seconds for most of the
+ * attributes to propagate throughout the SQS system. Changes made to the
+ *
+ * NOTE:Going forward, new attributes might be added. If you are
+ * writing code that calls this action, we recommend that you structure your
+ * code so that it can handle new attributes gracefully.
+ *
+ * Changes the visibility timeout of multiple messages. This is a batch
+ * version of ChangeMessageVisibility. The result of the action on each
+ * message is reported individually in the response. You can send up to 10
+ * ChangeMessageVisibility requests with each
+ *
+ * IMPORTANT:Because the batch request can result in a combination of
+ * successful and unsuccessful actions, you should check for batch errors
+ * even when the call returns an HTTP status code of 200.
+ *
+ * NOTE:Some API actions take lists of parameters. These lists are
+ * specified using the param.n notation. Values of n are integers starting
+ * from 1. For example, a parameter list with two elements looks like this:
+ *
+ *
+ *
+ * Changes the visibility timeout of a specified message in a queue to a new
+ * value. The maximum allowed timeout value you can set the value to is 12
+ * hours. This means you can't extend the timeout of a message in an
+ * existing queue to more than a total visibility timeout of 12 hours. (For
+ * more information visibility timeout, see Visibility Timeout in the Amazon SQS Developer Guide .)
+ *
+ * For example, let's say you have a message and its default message
+ * visibility timeout is 30 minutes. You could call
+ *
+ * NOTE: There is a 120,000 limit for the number of inflight messages
+ * per queue. Messages are inflight after they have been received from the
+ * queue by a consuming component, but have not yet been deleted from the
+ * queue. If you reach the 120,000 limit, you will receive an OverLimit
+ * error message from Amazon SQS. To help avoid reaching the limit, you
+ * should delete the messages from the queue after they have been processed.
+ * You can also increase the number of queues you use to process the
+ * messages.
+ *
+ * IMPORTANT:If you attempt to set the VisibilityTimeout to an amount
+ * more than the maximum time left, Amazon SQS returns an error. It will not
+ * automatically recalculate and increase the timeout to the maximum time
+ * remaining.
+ *
+ * IMPORTANT:Unlike with a queue, when you change the visibility
+ * timeout for a specific message, that timeout value is applied immediately
+ * but is not saved in memory for that message. If you don't delete a
+ * message after it is received, the visibility timeout for the message the
+ * next time it is received reverts to the original timeout value, not the
+ * value you set with the ChangeMessageVisibility action.
+ *
+ * Returns the URL of an existing queue. This action provides a simple way
+ * to retrieve the URL of an Amazon SQS queue.
+ *
+ * To access a queue that belongs to another AWS account, use the
+ *
+ * Revokes any permissions in the queue policy that matches the specified
+ *
+ * Gets attributes for the specified queue. The following attributes are
+ * supported:
+ *
+ * NOTE:Going forward, new attributes might be added. If you are
+ * writing code that calls this action, we recommend that you structure your
+ * code so that it can handle new attributes gracefully.
+ *
+ * NOTE:Some API actions take lists of parameters. These lists are
+ * specified using the param.n notation. Values of n are integers starting
+ * from 1. For example, a parameter list with two elements looks like this:
+ *
+ *
+ *
+ * Delivers up to ten messages to the specified queue. This is a batch
+ * version of SendMessage. The result of the send action on each message is
+ * reported individually in the response. The maximum allowed individual
+ * message size is 256 KB (262,144 bytes).
+ *
+ * The maximum total payload size (i.e., the sum of all a batch's individual
+ * message lengths) is also 256 KB (262,144 bytes).
+ *
+ * If the
+ * IMPORTANT:The following list shows the characters (in Unicode)
+ * that are allowed in your message, according to the W3C XML specification.
+ * For more information, go to http://www.faqs.org/rfcs/rfc1321.html. If you
+ * send any characters that are not included in the list, your request will
+ * be rejected. #x9 | #xA | #xD | [#x20 to #xD7FF] | [#xE000 to #xFFFD] |
+ * [#x10000 to #x10FFFF]
+ *
+ * IMPORTANT: Because the batch request can result in a combination
+ * of successful and unsuccessful actions, you should check for batch errors
+ * even when the call returns an HTTP status code of 200.
+ *
+ * NOTE:Some API actions take lists of parameters. These lists are
+ * specified using the param.n notation. Values of n are integers starting
+ * from 1. For example, a parameter list with two elements looks like this:
+ *
+ *
+ *
+ * Deletes the messages in a queue specified by the queue URL .
+ *
+ * IMPORTANT:When you use the PurgeQueue API, the deleted messages in
+ * the queue cannot be retrieved.
+ *
+ * When you purge a queue, the message deletion process takes up to 60
+ * seconds. All messages sent to the queue before calling
+ *
+ * Returns a list of your queues that have the RedrivePolicy queue attribute
+ * configured with a dead letter queue.
+ *
+ * For more information about using dead letter queues, see Using Amazon SQS Dead Letter Queues .
+ *
+ * Deletes the queue specified by the queue URL , regardless of
+ * whether the queue is empty. If the specified queue does not exist, Amazon
+ * SQS returns a successful response.
+ *
+ * IMPORTANT: Use DeleteQueue with care; once you delete your queue,
+ * any messages in the queue are no longer available.
+ *
+ * When you delete a queue, the deletion process takes up to 60 seconds.
+ * Requests you send involving that queue during the 60 seconds might
+ * succeed. For example, a SendMessage request might succeed, but after the
+ * 60 seconds, the queue and that message you sent no longer exist. Also,
+ * when you delete a queue, you must wait at least 60 seconds before
+ * creating a queue with the same name.
+ *
+ * We reserve the right to delete queues that have had no activity for more
+ * than 30 days. For more information, see How Amazon SQS Queues Work in the Amazon SQS Developer
+ * Guide .
+ *
+ * Returns a list of your queues. The maximum number of queues that can be
+ * returned is 1000. If you specify a value for the optional
+ *
+ * Deletes up to ten messages from the specified queue. This is a batch
+ * version of DeleteMessage. The result of the delete action on each message
+ * is reported individually in the response.
+ *
+ * IMPORTANT: Because the batch request can result in a combination
+ * of successful and unsuccessful actions, you should check for batch errors
+ * even when the call returns an HTTP status code of 200.
+ *
+ * NOTE:Some API actions take lists of parameters. These lists are
+ * specified using the param.n notation. Values of n are integers starting
+ * from 1. For example, a parameter list with two elements looks like this:
+ *
+ *
+ *
+ * Creates a new queue, or returns the URL of an existing one. When you
+ * request
+ * NOTE: If you delete a queue, you must wait at least 60 seconds
+ * before creating a queue with the same name.
+ *
+ * You may pass one or more attributes in the request. If you do not provide
+ * a value for any attribute, the queue will have the default value for that
+ * attribute. Permitted attributes are the same that can be set using
+ * SetQueueAttributes.
+ *
+ * NOTE: Use GetQueueUrl to get a queue's URL. GetQueueUrl requires
+ * only the QueueName parameter.
+ *
+ * If you provide the name of an existing queue, along with the exact names
+ * and values of all the queue's attributes,
+ * NOTE:Some API actions take lists of parameters. These lists are
+ * specified using the param.n notation. Values of n are integers starting
+ * from 1. For example, a parameter list with two elements looks like this:
+ *
+ *
+ *
+ * Adds a permission to a queue for a specific
+ * principal . This allows for sharing access to the queue.
+ *
+ * When you create a queue, you have full control access rights for the
+ * queue. Only you (as owner of the queue) can grant or deny permissions to
+ * the queue. For more information about these permissions, see Shared Queues in the Amazon SQS Developer Guide .
+ *
+ * NOTE: AddPermission writes an Amazon SQS-generated policy. If you
+ * want to write your own policy, use SetQueueAttributes to upload your
+ * policy. For more information about writing your own policy, see Using The
+ * Access Policy Language in the Amazon SQS Developer Guide.
+ *
+ * NOTE:Some API actions take lists of parameters. These lists are
+ * specified using the param.n notation. Values of n are integers starting
+ * from 1. For example, a parameter list with two elements looks like this:
+ *
+ *
+ *
+ * Returns a list of your queues. The maximum number of queues that can be
+ * returned is 1000. If you specify a value for the optional
+ *
+ * Sets the value of one or more queue attributes. When you change a queue's
+ * attributes, the change can take up to 60 seconds for most of the
+ * attributes to propagate throughout the SQS system. Changes made to the
+ *
+ * NOTE:Going forward, new attributes might be added. If you are
+ * writing code that calls this action, we recommend that you structure your
+ * code so that it can handle new attributes gracefully.
+ *
+ * The following lists the names, descriptions, and values of the
+ * special request parameters the
+ *
+ * Changes the visibility timeout of multiple messages. This is a batch
+ * version of ChangeMessageVisibility. The result of the action on each
+ * message is reported individually in the response. You can send up to 10
+ * ChangeMessageVisibility requests with each
+ *
+ * IMPORTANT:Because the batch request can result in a combination of
+ * successful and unsuccessful actions, you should check for batch errors
+ * even when the call returns an HTTP status code of 200.
+ *
+ * NOTE:Some API actions take lists of parameters. These lists are
+ * specified using the param.n notation. Values of n are integers starting
+ * from 1. For example, a parameter list with two elements looks like this:
+ *
+ *
+ *
+ * Changes the visibility timeout of a specified message in a queue to a new
+ * value. The maximum allowed timeout value you can set the value to is 12
+ * hours. This means you can't extend the timeout of a message in an
+ * existing queue to more than a total visibility timeout of 12 hours. (For
+ * more information visibility timeout, see Visibility Timeout in the Amazon SQS Developer Guide .)
+ *
+ * For example, let's say you have a message and its default message
+ * visibility timeout is 30 minutes. You could call
+ *
+ * NOTE: There is a 120,000 limit for the number of inflight messages
+ * per queue. Messages are inflight after they have been received from the
+ * queue by a consuming component, but have not yet been deleted from the
+ * queue. If you reach the 120,000 limit, you will receive an OverLimit
+ * error message from Amazon SQS. To help avoid reaching the limit, you
+ * should delete the messages from the queue after they have been processed.
+ * You can also increase the number of queues you use to process the
+ * messages.
+ *
+ * IMPORTANT:If you attempt to set the VisibilityTimeout to an amount
+ * more than the maximum time left, Amazon SQS returns an error. It will not
+ * automatically recalculate and increase the timeout to the maximum time
+ * remaining.
+ *
+ * IMPORTANT:Unlike with a queue, when you change the visibility
+ * timeout for a specific message, that timeout value is applied immediately
+ * but is not saved in memory for that message. If you don't delete a
+ * message after it is received, the visibility timeout for the message the
+ * next time it is received reverts to the original timeout value, not the
+ * value you set with the ChangeMessageVisibility action.
+ *
+ * Returns the URL of an existing queue. This action provides a simple way
+ * to retrieve the URL of an Amazon SQS queue.
+ *
+ * To access a queue that belongs to another AWS account, use the
+ *
+ * Revokes any permissions in the queue policy that matches the specified
+ *
+ * Gets attributes for the specified queue. The following attributes are
+ * supported:
+ * SendMessage
,
- * DeleteMessage
, or
- * ChangeMessageVisibility
for the
- * ActionName.n
also grants permissions for the
- * corresponding batch versions of those actions:
- * SendMessageBatch
, DeleteMessageBatch
- * , and ChangeMessageVisibilityBatch
.
- *
- * @return The response from the AddPermission service method, as returned
- * by AmazonSQS.
- *
- * @throws OverLimitException
- *
- * @throws AmazonClientException
- * If any internal errors are encountered inside the client
- * while attempting to make the request or handle the response.
- * For example if a network connection is not available.
- * @throws AmazonServiceException
- * If an error response is returned by AmazonSQS indicating
- * either a problem with the data in the request, or a server
- * side issue.
- */
- public AddPermissionResult addPermission(String queueUrl, String label, ListWaitTimeSeconds
parameter. For more information, see Amazon SQS Long Poll in the Amazon SQS Developer Guide .
+ * ReceiveMessage
call. This means
+ * only the messages on the sampled machines are returned. If the number of
+ * messages in the queue is small (less than 1000), it is likely you will
+ * get fewer messages than you requested per ReceiveMessage
+ * call. If the number of messages in the queue is extremely small, you
+ * might not receive any messages in a particular
+ * ReceiveMessage
response; in which case you should repeat the
+ * request.
+ *
+ *
+ * VisibilityTimeout
parameter in your
+ * request, which will be applied to the messages that Amazon SQS returns in
+ * the response. If you do not include the parameter, the overall visibility
+ * timeout for the queue is used for the returned messages. For more
+ * information, see Visibility Timeout in the Amazon SQS Developer Guide .
+ * receipt handle
and not the
+ * message ID
you received when you sent the message. Even if
+ * the message is locked by another reader due to the visibility timeout
+ * setting, it is still deleted from the queue. If you leave a message in
+ * the queue for longer than the queue's configured retention period, Amazon
+ * SQS automatically deletes it.
+ * MessageRetentionPeriod
attribute can take up to 15 minutes.
+ * ChangeMessageVisibilityBatch
action.
+ * &Attribute.1=this
+ * &Attribute.2=that
+ * ChangeMessageVisiblity
with a value of two hours and the
+ * effective timeout would be two hours and 30 minutes. When that time comes
+ * near you could again extend the time out by calling
+ * ChangeMessageVisiblity, but this time the maximum allowed timeout would
+ * be 9 hours and 30 minutes.
+ * QueueOwnerAWSAccountId
parameter to specify the account ID
+ * of the queue's owner. The queue's owner must grant you permission to
+ * access the queue. For more information about shared queue access, see
+ * AddPermission or go to Shared Queues in the Amazon SQS Developer Guide .
+ * Label
parameter. Only the owner of the queue can remove
+ * permissions.
+ *
+ *
+ *
+ * All
- returns all values.ApproximateNumberOfMessages
- returns the approximate
+ * number of visible messages in a queue. For more information, see Resources Required to Process Messages in the Amazon SQS
+ * Developer Guide .ApproximateNumberOfMessagesNotVisible
- returns the
+ * approximate number of messages that are not timed-out and not deleted.
+ * For more information, see Resources Required to Process Messages in the Amazon SQS
+ * Developer Guide .VisibilityTimeout
- returns the visibility timeout for
+ * the queue. For more information about visibility timeout, see Visibility Timeout in the Amazon SQS Developer Guide .CreatedTimestamp
- returns the time when the queue was
+ * created (epoch time in seconds).LastModifiedTimestamp
- returns the time when the queue
+ * was last changed (epoch time in seconds).Policy
- returns the queue's policy.MaximumMessageSize
- returns the limit of how many bytes
+ * a message can contain before Amazon SQS rejects it.MessageRetentionPeriod
- returns the number of seconds
+ * Amazon SQS retains a message.QueueArn
- returns the queue's Amazon resource name
+ * (ARN).ApproximateNumberOfMessagesDelayed
- returns the
+ * approximate number of messages that are pending to be added to the queue.
+ * DelaySeconds
- returns the default delay on the queue in
+ * seconds.ReceiveMessageWaitTimeSeconds
- returns the time for
+ * which a ReceiveMessage call will wait for a message to arrive.RedrivePolicy
- returns the parameters for dead letter
+ * queue functionality of the source queue. For more information about
+ * RedrivePolicy and dead letter queues, see Using Amazon SQS Dead Letter Queues in the Amazon SQS Developer
+ * Guide .&Attribute.1=this
+ * &Attribute.2=that
+ * DelaySeconds
parameter is not specified for an entry,
+ * the default for the queue is used.
+ * &Attribute.1=this
+ * &Attribute.2=that
+ * PurgeQueue
will be deleted; messages sent to the queue while
+ * it is being purged may be deleted. While the queue is being purged,
+ * messages sent to the queue before PurgeQueue
was called may
+ * be received, but will be deleted within the next minute.
+ * QueueNamePrefix
parameter, only queues with a name beginning
+ * with the specified value are returned.
+ * &Attribute.1=this
+ * &Attribute.2=that
+ * CreateQueue
, you provide a name for the queue. To
+ * successfully create a new queue, you must provide a name that is unique
+ * within the scope of your own queues.
+ * CreateQueue
+ * returns the queue URL for the existing queue. If the queue name,
+ * attribute names, or attribute values do not match an existing queue,
+ * CreateQueue
returns an error.
+ * &Attribute.1=this
+ * &Attribute.2=that
+ * &Attribute.1=this
+ * &Attribute.2=that
+ * QueueNamePrefix
parameter, only queues with a name beginning
+ * with the specified value are returned.
+ * MessageRetentionPeriod
attribute can take up to 15 minutes.
+ * SetQueueAttributes
+ * action uses:
+ *
+ *
+ *
+ * @return The response from the SetQueueAttributes service method, as
+ * returned by AmazonSQS.
+ *
+ * @throws InvalidAttributeNameException
+ *
+ * @throws AmazonClientException
+ * If any internal errors are encountered inside the client
+ * while attempting to make the request or handle the response.
+ * For example if a network connection is not available.
+ * @throws AmazonServiceException
+ * If an error response is returned by AmazonSQS indicating
+ * either a problem with the data in the request, or a server
+ * side issue.
+ */
+ public SetQueueAttributesResult setQueueAttributes(String queueUrl, MapDelaySeconds
- The time in seconds that the
+ * delivery of all messages in the queue will be delayed. An
+ * integer from 0 to 900 (15 minutes). The default for this
+ * attribute is 0 (zero).MaximumMessageSize
- The limit of how many
+ * bytes a message can contain before Amazon SQS rejects it. An
+ * integer from 1024 bytes (1 KiB) up to 262144 bytes (256 KiB).
+ * The default for this attribute is 262144 (256 KiB).MessageRetentionPeriod
- The number of
+ * seconds Amazon SQS retains a message. Integer representing
+ * seconds, from 60 (1 minute) to 1209600 (14 days). The default
+ * for this attribute is 345600 (4 days).Policy
- The queue's policy. A valid AWS
+ * policy. For more information about policy structure, see Overview of AWS IAM Policies in the Amazon IAM User
+ * Guide.ReceiveMessageWaitTimeSeconds
- The time for
+ * which a ReceiveMessage call will wait for a message to arrive.
+ * An integer from 0 to 20 (seconds). The default for this
+ * attribute is 0.VisibilityTimeout
- The visibility timeout
+ * for the queue. An integer from 0 to 43200 (12 hours). The
+ * default for this attribute is 30. For more information about
+ * visibility timeout, see Visibility Timeout in the Amazon
+ * SQS Developer Guide.RedrivePolicy
- The parameters for dead
+ * letter queue functionality of the source queue. For more
+ * information about RedrivePolicy and dead letter queues, see
+ * Using Amazon SQS Dead Letter Queues in the Amazon SQS
+ * Developer Guide.ChangeMessageVisibilityBatch
action.
+ * &Attribute.1=this
+ * &Attribute.2=that
+ * ChangeMessageVisiblity
with a value of two hours and the
+ * effective timeout would be two hours and 30 minutes. When that time comes
+ * near you could again extend the time out by calling
+ * ChangeMessageVisiblity, but this time the maximum allowed timeout would
+ * be 9 hours and 30 minutes.
+ * QueueOwnerAWSAccountId
parameter to specify the account ID
+ * of the queue's owner. The queue's owner must grant you permission to
+ * access the queue. For more information about shared queue access, see
+ * AddPermission or go to Shared Queues in the Amazon SQS Developer Guide .
+ * Label
parameter. Only the owner of the queue can remove
+ * permissions.
+ *
+ *
+ *
+ * All
- returns all values.ApproximateNumberOfMessages
- returns the approximate
+ * number of visible messages in a queue. For more information, see Resources Required to Process Messages in the Amazon SQS
+ * Developer Guide .ApproximateNumberOfMessagesNotVisible
- returns the
+ * approximate number of messages that are not timed-out and not deleted.
+ * For more information, see Resources Required to Process Messages in the Amazon SQS
+ * Developer Guide .VisibilityTimeout
- returns the visibility timeout for
+ * the queue. For more information about visibility timeout, see Visibility Timeout in the Amazon SQS Developer Guide .CreatedTimestamp
- returns the time when the queue was
+ * created (epoch time in seconds).LastModifiedTimestamp
- returns the time when the queue
+ * was last changed (epoch time in seconds).Policy
- returns the queue's policy.MaximumMessageSize
- returns the limit of how many bytes
+ * a message can contain before Amazon SQS rejects it.MessageRetentionPeriod
- returns the number of seconds
+ * Amazon SQS retains a message.QueueArn
- returns the queue's Amazon resource name
+ * (ARN).ApproximateNumberOfMessagesDelayed
- returns the
+ * approximate number of messages that are pending to be added to the queue.
+ * DelaySeconds
- returns the default delay on the queue in
+ * seconds.ReceiveMessageWaitTimeSeconds
- returns the time for
+ * which a ReceiveMessage call will wait for a message to arrive.RedrivePolicy
- returns the parameters for dead letter
+ * queue functionality of the source queue. For more information about
+ * RedrivePolicy and dead letter queues, see Using Amazon SQS Dead Letter Queues in the Amazon SQS Developer
+ * Guide .
+ * NOTE:Going forward, new attributes might be added. If you are + * writing code that calls this action, we recommend that you structure your + * code so that it can handle new attributes gracefully. + *
+ *+ * NOTE:Some API actions take lists of parameters. These lists are + * specified using the param.n notation. Values of n are integers starting + * from 1. For example, a parameter list with two elements looks like this: + *
+ *
+ * &Attribute.1=this
+ *
+ * &Attribute.2=that
+ *
+ * Delivers up to ten messages to the specified queue. This is a batch + * version of SendMessage. The result of the send action on each message is + * reported individually in the response. The maximum allowed individual + * message size is 256 KB (262,144 bytes). + *
+ *+ * The maximum total payload size (i.e., the sum of all a batch's individual + * message lengths) is also 256 KB (262,144 bytes). + *
+ *
+ * If the DelaySeconds
parameter is not specified for an entry,
+ * the default for the queue is used.
+ *
+ * IMPORTANT:The following list shows the characters (in Unicode) + * that are allowed in your message, according to the W3C XML specification. + * For more information, go to http://www.faqs.org/rfcs/rfc1321.html. If you + * send any characters that are not included in the list, your request will + * be rejected. #x9 | #xA | #xD | [#x20 to #xD7FF] | [#xE000 to #xFFFD] | + * [#x10000 to #x10FFFF] + *
+ *+ * IMPORTANT: Because the batch request can result in a combination + * of successful and unsuccessful actions, you should check for batch errors + * even when the call returns an HTTP status code of 200. + *
+ *+ * NOTE:Some API actions take lists of parameters. These lists are + * specified using the param.n notation. Values of n are integers starting + * from 1. For example, a parameter list with two elements looks like this: + *
+ *
+ * &Attribute.1=this
+ *
+ * &Attribute.2=that
+ *
+ * Deletes the queue specified by the queue URL , regardless of + * whether the queue is empty. If the specified queue does not exist, Amazon + * SQS returns a successful response. + *
+ *+ * IMPORTANT: Use DeleteQueue with care; once you delete your queue, + * any messages in the queue are no longer available. + *
+ *+ * When you delete a queue, the deletion process takes up to 60 seconds. + * Requests you send involving that queue during the 60 seconds might + * succeed. For example, a SendMessage request might succeed, but after the + * 60 seconds, the queue and that message you sent no longer exist. Also, + * when you delete a queue, you must wait at least 60 seconds before + * creating a queue with the same name. + *
+ *+ * We reserve the right to delete queues that have had no activity for more + * than 30 days. For more information, see How Amazon SQS Queues Work in the Amazon SQS Developer + * Guide . + *
+ * + * @param queueUrl + * The URL of the Amazon SQS queue to take action on. + * + * @return The response from the DeleteQueue service method, as returned by + * AmazonSQS. + * + * + * @throws AmazonClientException + * If any internal errors are encountered inside the client + * while attempting to make the request or handle the response. + * For example if a network connection is not available. + * @throws AmazonServiceException + * If an error response is returned by AmazonSQS indicating + * either a problem with the data in the request, or a server + * side issue. + */ + public DeleteQueueResult deleteQueue(String queueUrl) throws AmazonServiceException, AmazonClientException { + + return amazonSqsToBeExtended.deleteQueue(queueUrl); + } + + /** + *
+ * Returns a list of your queues. The maximum number of queues that can be
+ * returned is 1000. If you specify a value for the optional
+ * QueueNamePrefix
parameter, only queues with a name beginning
+ * with the specified value are returned.
+ *
+ * Deletes up to ten messages from the specified queue. This is a batch + * version of DeleteMessage. The result of the delete action on each message + * is reported individually in the response. + *
+ *+ * IMPORTANT: Because the batch request can result in a combination + * of successful and unsuccessful actions, you should check for batch errors + * even when the call returns an HTTP status code of 200. + *
+ *+ * NOTE:Some API actions take lists of parameters. These lists are + * specified using the param.n notation. Values of n are integers starting + * from 1. For example, a parameter list with two elements looks like this: + *
+ *
+ * &Attribute.1=this
+ *
+ * &Attribute.2=that
+ *
+ * Creates a new queue, or returns the URL of an existing one. When you
+ * request CreateQueue
, you provide a name for the queue. To
+ * successfully create a new queue, you must provide a name that is unique
+ * within the scope of your own queues.
+ *
+ * NOTE: If you delete a queue, you must wait at least 60 seconds + * before creating a queue with the same name. + *
+ *+ * You may pass one or more attributes in the request. If you do not provide + * a value for any attribute, the queue will have the default value for that + * attribute. Permitted attributes are the same that can be set using + * SetQueueAttributes. + *
+ *+ * NOTE: Use GetQueueUrl to get a queue's URL. GetQueueUrl requires + * only the QueueName parameter. + *
+ *
+ * If you provide the name of an existing queue, along with the exact names
+ * and values of all the queue's attributes, CreateQueue
+ * returns the queue URL for the existing queue. If the queue name,
+ * attribute names, or attribute values do not match an existing queue,
+ * CreateQueue
returns an error.
+ *
+ * NOTE:Some API actions take lists of parameters. These lists are + * specified using the param.n notation. Values of n are integers starting + * from 1. For example, a parameter list with two elements looks like this: + *
+ *
+ * &Attribute.1=this
+ *
+ * &Attribute.2=that
+ *
+ * Adds a permission to a queue for a specific + * principal . This allows for sharing access to the queue. + *
+ *+ * When you create a queue, you have full control access rights for the + * queue. Only you (as owner of the queue) can grant or deny permissions to + * the queue. For more information about these permissions, see Shared Queues in the Amazon SQS Developer Guide . + *
+ *+ * NOTE: AddPermission writes an Amazon SQS-generated policy. If you + * want to write your own policy, use SetQueueAttributes to upload your + * policy. For more information about writing your own policy, see Using The + * Access Policy Language in the Amazon SQS Developer Guide. + *
+ *+ * NOTE:Some API actions take lists of parameters. These lists are + * specified using the param.n notation. Values of n are integers starting + * from 1. For example, a parameter list with two elements looks like this: + *
+ *
+ * &Attribute.1=this
+ *
+ * &Attribute.2=that
+ *
AliceSendMessage
). Constraints: Maximum 80
+ * characters; alphanumeric characters, hyphens (-), and
+ * underscores (_) are allowed.
+ * @param aWSAccountIds
+ * The AWS account number of the principal who will be given permission. The principal
+ * must have an AWS account, but does not need to be signed up
+ * for Amazon SQS. For information about locating the AWS account
+ * identification, see Your AWS Identifiers in the Amazon SQS Developer
+ * Guide.
+ * @param actions
+ * The action the client wants to allow for the specified
+ * principal. The following are valid values:
+ * * | SendMessage |
+ * ReceiveMessage | DeleteMessage | ChangeMessageVisibility |
+ * GetQueueAttributes | GetQueueUrl
. For more information about these
+ * actions, see Understanding Permissions in the Amazon SQS Developer
+ * Guide.
+ *
+ * Specifying
+ * Response metadata is only cached for a limited period of time, so if you
+ * need to access this extra diagnostic information for an executed request,
+ * you should use this method to retrieve it as soon as possible after
+ * executing the request.
+ *
+ * @param request
+ * The originally executed request
+ *
+ * @return The response metadata for the specified request, or null if none
+ * is available.
+ */
+ public ResponseMetadata getCachedResponseMetadata(AmazonWebServiceRequest request) {
+
+ return amazonSqsToBeExtended.getCachedResponseMetadata(request);
+ }
+
+ /**
+ * Overrides the default endpoint for this client ("sqs.us-east-1.amazonaws.com").
+ * Callers can use this method to control which AWS region they want to work with.
+ *
+ * Callers can pass in just the endpoint (ex: "sqs.us-east-1.amazonaws.com") or a full
+ * URL, including the protocol (ex: "sqs.us-east-1.amazonaws.com"). If the
+ * protocol is not specified here, the default protocol from this client's
+ * {@link ClientConfiguration} will be used, which by default is HTTPS.
+ *
+ * For more information on using AWS regions with the AWS SDK for Java, and
+ * a complete list of all available endpoints for all AWS services, see:
+ *
+ * http://developer.amazonwebservices.com/connect/entry.jspa?externalID=3912
+ *
+ * This method is not threadsafe. An endpoint should be configured when the
+ * client is created and before any service requests are made. Changing it
+ * afterwards creates inevitable race conditions for any service requests in
+ * transit or retrying.
+ *
+ * @param endpoint
+ * The endpoint (ex: "sqs.us-east-1.amazonaws.com") or a full URL,
+ * including the protocol (ex: "sqs.us-east-1.amazonaws.com") of
+ * the region specific AWS endpoint this client will communicate
+ * with.
+ *
+ * @throws IllegalArgumentException
+ * If any problems are detected with the specified endpoint.
+ */
+ public void setEndpoint(String endpoint) throws IllegalArgumentException {
+
+ amazonSqsToBeExtended.setEndpoint(endpoint);
+
+ }
+
+ /**
+ * An alternative to {@link AmazonSQS#setEndpoint(String)}, sets the
+ * regional endpoint for this client's service calls. Callers can use this
+ * method to control which AWS region they want to work with.
+ *
+ * By default, all service endpoints in all regions use the https protocol.
+ * To use http instead, specify it in the {@link ClientConfiguration}
+ * supplied at construction.
+ *
+ * This method is not threadsafe. A region should be configured when the
+ * client is created and before any service requests are made. Changing it
+ * afterwards creates inevitable race conditions for any service requests in
+ * transit or retrying.
+ *
+ * @param region
+ * The region this client will communicate with. See
+ * {@link Region#getRegion(com.amazonaws.regions.Regions)} for
+ * accessing a given region.
+ * @throws java.lang.IllegalArgumentException
+ * If the given region is null, or if this service isn't
+ * available in the given region. See
+ * {@link Region#isServiceSupported(String)}
+ * @see Region#getRegion(com.amazonaws.regions.Regions)
+ * @see Region#createClient(Class, AWSCredentialsProvider, ClientConfiguration)
+ */
+ public void setRegion(Region region) throws IllegalArgumentException {
+
+ amazonSqsToBeExtended.setRegion(region);
+
+ }
+
+ /**
+ * Shuts down this client object, releasing any resources that might be held
+ * open. This is an optional method, and callers are not expected to call
+ * it, but can if they want to explicitly release any open resources. Once a
+ * client has been shutdown, it should not be used to make any more
+ * requests.
+ */
+ public void shutdown() {
+
+ amazonSqsToBeExtended.shutdown();
+ }
+
+ /** {@inheritDoc} */
+ @Override public ListQueueTagsResult listQueueTags(final ListQueueTagsRequest listQueueTagsRequest) {
+ return amazonSqsToBeExtended.listQueueTags(listQueueTagsRequest);
+ }
+
+ /** {@inheritDoc} */
+ @Override public ListQueueTagsResult listQueueTags(final String queueUrl) {
+ return amazonSqsToBeExtended.listQueueTags(queueUrl);
+ }
+
+ /** {@inheritDoc} */
+ @Override public TagQueueResult tagQueue(final TagQueueRequest tagQueueRequest) {
+ return amazonSqsToBeExtended.tagQueue(tagQueueRequest);
+ }
+
+ /** {@inheritDoc} */
+ @Override public TagQueueResult tagQueue(final String queueUrl, final MapSendMessage
,
+ * DeleteMessage
, or
+ * ChangeMessageVisibility
for the
+ * ActionName.n
also grants permissions for the
+ * corresponding batch versions of those actions:
+ * SendMessageBatch
, DeleteMessageBatch
+ * , and ChangeMessageVisibilityBatch
.
+ *
+ * @return The response from the AddPermission service method, as returned
+ * by AmazonSQS.
+ *
+ * @throws OverLimitException
+ *
+ * @throws AmazonClientException
+ * If any internal errors are encountered inside the client
+ * while attempting to make the request or handle the response.
+ * For example if a network connection is not available.
+ * @throws AmazonServiceException
+ * If an error response is returned by AmazonSQS indicating
+ * either a problem with the data in the request, or a server
+ * side issue.
+ */
+ public AddPermissionResult addPermission(String queueUrl, String label, List