diff --git a/.gitignore b/.gitignore
index 07827cc..1cdb3d4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,3 @@
target/
-.idea/
\ No newline at end of file
+.idea/
+*.iml
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 965b151..6ca2225 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
- * Delivers a message to the specified queue and uploads the message payload
- * to Amazon S3 if necessary.
+ * Delivers a message to the specified queue.
*
- * 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]
+ * A message can include only XML, JSON, and unformatted text. The following Unicode characters are allowed:
*
+ * #x9
| #xA
| #xD
| #x20
to #xD7FF
|
+ * #xE000
to #xFFFD
| #x10000
to #x10FFFF
+ *
+ * Any characters not included in this list will be rejected. For more information, see the W3C specification for characters. + *
+ * * * @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. - * + * @return Result of the SendMessage operation returned by the service. * @throws InvalidMessageContentsException + * The message contains characters outside the allowed set. * @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. + * Error code 400. Unsupported operation. + * @throws SdkException + * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for + * catch all scenarios. + * @throws SdkClientException + * If any client side error occurs such as an IO related failure, failure to get credentials, etc. + * @throws SqsException + * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type. + * @sample SqsClient.SendMessage + * @see AWS API + * Documentation */ - public SendMessageResult sendMessage(SendMessageRequest sendMessageRequest) { + public SendMessageResponse 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); + throw SdkClientException.create(errorMessage); } - sendMessageRequest.getRequestClientOptions().appendUserAgent(USER_AGENT_HEADER); + SendMessageRequest.Builder sendMessageRequestBuilder = sendMessageRequest.toBuilder(); + sendMessageRequest = appendUserAgent(sendMessageRequestBuilder).build(); if (!clientConfiguration.isPayloadSupportEnabled()) { return super.sendMessage(sendMessageRequest); } - if (sendMessageRequest.getMessageBody() == null || "".equals(sendMessageRequest.getMessageBody())) { + if (StringUtils.isEmpty(sendMessageRequest.messageBody())) { String errorMessage = "messageBody cannot be null or empty."; LOG.error(errorMessage); - throw new AmazonClientException(errorMessage); + throw SdkClientException.create(errorMessage); } //Check message attributes for ExtendedClient related constraints - checkMessageAttributes(sendMessageRequest.getMessageAttributes()); + checkMessageAttributes(sendMessageRequest.messageAttributes()); if (clientConfiguration.isAlwaysThroughS3() || isLarge(sendMessageRequest)) { sendMessageRequest = storeMessageInS3(sendMessageRequest); @@ -192,372 +214,211 @@ public SendMessageResult sendMessage(SendMessageRequest 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 .
+ * Retrieves one or more messages (up to 10), from the specified queue. Using the WaitTimeSeconds
+ * parameter enables long-poll support. For more information, see Amazon
+ * SQS Long Polling in the Amazon Simple Queue Service 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.
+ * Short poll is the default behavior where a weighted random set of machines is sampled on a
+ * ReceiveMessage
call. Thus, only the messages on the sampled machines are returned. If the number of
+ * messages in the queue is small (fewer than 1,000), you most likely 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. If this happens, repeat the request.
*
* For each message returned, the response includes the following: *
- * *- * Message body + * The message body. *
*- * MD5 digest of the message body. For information about MD5, go to - * http://www.faqs.org/rfcs/rfc1321.html . + * An MD5 digest of the message body. For information about MD5, see RFC1321. *
*
- * Message ID you received when you sent the message to the queue.
+ * The MessageId
you received when you sent the message to the queue.
*
- * Receipt handle. + * The receipt handle. *
*- * Message attributes. + * The message attributes. *
*- * MD5 digest of the message attributes. + * An 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 . + * The receipt handle is the identifier you must provide when deleting the message. For more information, see Queue and Message Identifiers in the Amazon Simple Queue Service 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 .
+ * You can provide the VisibilityTimeout
parameter in your request. The parameter is applied to the
+ * messages that Amazon SQS returns in the response. If you don't 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 Simple Queue Service 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. + * A message that isn't deleted or a message whose visibility isn't extended before the visibility timeout expires + * counts as a failed receive. Depending on the configuration of the queue, the message might be sent to the + * dead-letter queue. *
+ *+ * In the future, new attributes might be added. If you write code that calls this action, we recommend that you + * structure your code so that it can handle new attributes gracefully. + *
+ *ReceiveMessage
returns this error if the
+ * maximum number of inflight messages is reached and AddPermission
returns this error if the
+ * maximum number of permissions for the queue is reached.
+ * @throws SdkException
+ * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for
+ * catch all scenarios.
+ * @throws SdkClientException
+ * If any client side error occurs such as an IO related failure, failure to get credentials, etc.
+ * @throws SqsException
+ * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type.
+ * @sample SqsClient.ReceiveMessage
+ * @see AWS API
+ * Documentation
*/
- public ReceiveMessageResult receiveMessage(ReceiveMessageRequest receiveMessageRequest) {
+ public ReceiveMessageResponse 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);
+ throw SdkClientException.create(errorMessage);
}
- receiveMessageRequest.getRequestClientOptions().appendUserAgent(USER_AGENT_HEADER);
+ ReceiveMessageRequest.Builder receiveMessageRequestBuilder = receiveMessageRequest.toBuilder();
+ appendUserAgent(receiveMessageRequestBuilder);
if (!clientConfiguration.isPayloadSupportEnabled()) {
- return super.receiveMessage(receiveMessageRequest);
+ return super.receiveMessage(receiveMessageRequestBuilder.build());
}
//Remove before adding to avoid any duplicates
- receiveMessageRequest.getMessageAttributeNames().removeAll(RESERVED_ATTRIBUTE_NAMES);
- receiveMessageRequest.getMessageAttributeNames().addAll(RESERVED_ATTRIBUTE_NAMES);
+ 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); + receiveMessageResponseBuilder.messages(modifiedMessages); + return receiveMessageResponseBuilder.build(); } /** *
- * 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.
+ * Deletes the specified message from the specified queue. To select the message to delete, use the
+ * ReceiptHandle
of the message (not the MessageId
which you receive when you send
+ * the message). Amazon SQS can delete a message from a queue even if a visibility timeout setting causes the
+ * message to be locked by another consumer. Amazon SQS automatically deletes messages left in a queue longer than
+ * the retention period configured for the queue.
*
- * 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.
+ * The ReceiptHandle
is associated with a specific instance of receiving a message. If you
+ * receive a message more than once, the ReceiptHandle
is different each time you receive a message.
+ * When you use the DeleteMessage
action, you must provide the most recently received
+ * ReceiptHandle
for the message (otherwise, the request succeeds, 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. + * For standard queues, it is possible to receive a message even after you delete it. This might happen on rare + * occasions if one of the servers which stores a copy of the message is unavailable when you send the request to + * delete the message. The copy remains on the server and might be returned to you during a subsequent receive + * request. You should ensure that your application is idempotent, so that receiving a message more than once does + * not cause issues. *
+ *
- * 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.
+ * Changes the visibility timeout of a specified message in a queue to a new value. The default visibility timeout
+ * for a message is 30 seconds. The minimum is 0 seconds. The maximum is 12 hours. For more information, see
+ * Visibility Timeout in the Amazon Simple Queue Service Developer Guide.
*
- * 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.
+ * For example, you have a message with a visibility timeout of 5 minutes. After 3 minutes, you call
+ * ChangeMessageVisibility
with a timeout of 10 minutes. You can continue to call
+ * ChangeMessageVisibility
to extend the visibility timeout to the maximum allowed time. If you try to
+ * extend the visibility timeout beyond the maximum, your request is rejected.
*
- * 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. + * An Amazon SQS message has three basic states: *
- * - * @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); - } - - /** + *+ * Sent to a queue by a producer. + *
+ *+ * Received from the queue by a consumer. + *
+ *- * 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 .) + * Deleted from the queue. + *
+ *+ * A message is considered to be stored after it is sent to a queue by a producer, but not yet received from + * the queue by a consumer (that is, between states 1 and 2). There is no limit to the number of stored messages. A + * message is considered to be in flight after it is received from a queue by a consumer, but not yet deleted + * from the queue (that is, between states 2 and 3). There is a limit to the number of inflight messages. *
*
- * 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.
+ * Limits that apply to inflight messages are unrelated to the unlimited number of stored messages.
*
- * 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.
+ * For most standard queues (depending on queue traffic and message backlog), there can be a maximum of
+ * approximately 120,000 inflight messages (received from a queue by a consumer, but not yet deleted from the
+ * queue). If you reach this limit, Amazon SQS returns the OverLimit
error message. To avoid reaching
+ * the limit, you should delete messages from the queue after they're processed. You can also increase the number of
+ * queues you use to process your messages. To request a limit increase, file a support request.
*
- * 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. + * For FIFO queues, there can be a maximum of 20,000 inflight messages (received from a queue by a consumer, but not + * yet deleted from the queue). If you reach this limit, Amazon SQS returns no error messages. *
+ *
- * 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.
+ * If you attempt to set the VisibilityTimeout
to a value greater than the maximum time left, Amazon
+ * SQS returns an error. Amazon SQS doesn't automatically recalculate and increase the timeout to the maximum
+ * remaining time.
*
+ * Unlike with a queue, when you change the visibility timeout for a specific message the timeout value is applied
+ * immediately but isn't saved in memory for that message. If you don't delete a message after it is received, the
+ * visibility timeout for the message reverts to the original timeout value (not to the value you set using the
+ * ChangeMessageVisibility
action) the next time the message is received.
+ *
- * 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.
+ * Delivers up to ten messages to the specified queue. This is a batch version of SendMessage.
+ * For a FIFO queue, multiple messages within a single batch are enqueued in the order they are sent.
+ *
+ * The result of sending each message is reported individually in the response. 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
.
+ *
+ * The maximum allowed individual message size and the maximum total payload size (the sum of the individual lengths + * of all of the batched messages) are both 256 KB (262,144 bytes). *
+ *
- * If the DelaySeconds
parameter is not specified for an entry,
- * the default for the queue is used.
+ * A message can include only XML, JSON, and unformatted text. The following Unicode characters are allowed:
*
- * 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]
+ * #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. + * Any characters not included in this list will be rejected. For more information, see the W3C specification for characters. *
- * 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:
+ * If you don't specify the DelaySeconds
parameter for an entry, Amazon SQS uses the default value for
+ * the queue.
*
- * &Attribute.1=this
+ * Some 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.2=that
+ * &AttributeName.1=first
+ *
+ * &AttributeName.2=second
*
Id
.
* @throws BatchRequestTooLongException
- * @throws UnsupportedOperationException
+ * The length of all the messages put together is more than the limit.
* @throws InvalidBatchEntryIdException
- * @throws EmptyBatchRequestException
- *
- * @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.
+ * The Id
of a batch entry in a batch request doesn't abide by the specification.
+ * @throws UnsupportedOperationException
+ * Error code 400. Unsupported operation.
+ * @throws SdkException
+ * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for
+ * catch all scenarios.
+ * @throws SdkClientException
+ * If any client side error occurs such as an IO related failure, failure to get credentials, etc.
+ * @throws SqsException
+ * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type.
+ * @sample SqsClient.SendMessageBatch
+ * @see AWS API
+ * Documentation
*/
- public SendMessageBatchResult sendMessageBatch(SendMessageBatchRequest sendMessageBatchRequest) {
+ public SendMessageBatchResponse sendMessageBatch(SendMessageBatchRequest sendMessageBatchRequest) {
if (sendMessageBatchRequest == null) {
String errorMessage = "sendMessageBatchRequest cannot be null.";
LOG.error(errorMessage);
- throw new AmazonClientException(errorMessage);
+ throw SdkClientException.create(errorMessage);
}
- sendMessageBatchRequest.getRequestClientOptions().appendUserAgent(USER_AGENT_HEADER);
+ SendMessageBatchRequest.Builder sendMessageBatchRequestBuilder = sendMessageBatchRequest.toBuilder();
+ appendUserAgent(sendMessageBatchRequestBuilder);
+ sendMessageBatchRequest = sendMessageBatchRequestBuilder.build();
if (!clientConfiguration.isPayloadSupportEnabled()) {
return super.sendMessageBatch(sendMessageBatchRequest);
}
- List
- * 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.
+ * Deletes up to ten messages from the specified queue. This is a batch version of
+ * DeleteMessage.
The result of the action on each message is reported individually in the
+ * response.
*
- * If the DelaySeconds
parameter is not specified for an entry,
- * the default for the queue is used.
+ * 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 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]
+ * Some 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:
*
- * 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.
+ * &AttributeName.1=first
*
- * 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:
+ * &AttributeName.2=second
*
- * &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
- *
Id
.
* @throws InvalidBatchEntryIdException
- * @throws EmptyBatchRequestException
- *
- * @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.
+ * The Id
of a batch entry in a batch request doesn't abide by the specification.
+ * @throws SdkException
+ * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for
+ * catch all scenarios.
+ * @throws SdkClientException
+ * If any client side error occurs such as an IO related failure, failure to get credentials, etc.
+ * @throws SqsException
+ * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type.
+ * @sample SqsClient.DeleteMessageBatch
+ * @see AWS API
+ * Documentation
*/
- public DeleteMessageBatchResult deleteMessageBatch(DeleteMessageBatchRequest deleteMessageBatchRequest) {
+ public DeleteMessageBatchResponse deleteMessageBatch(DeleteMessageBatchRequest deleteMessageBatchRequest) {
if (deleteMessageBatchRequest == null) {
String errorMessage = "deleteMessageBatchRequest cannot be null.";
LOG.error(errorMessage);
- throw new AmazonClientException(errorMessage);
+ throw SdkClientException.create(errorMessage);
}
- deleteMessageBatchRequest.getRequestClientOptions().appendUserAgent(USER_AGENT_HEADER);
+ DeleteMessageBatchRequest.Builder deleteMessageBatchRequestBuilder = deleteMessageBatchRequest.toBuilder();
+ appendUserAgent(deleteMessageBatchRequestBuilder);
if (!clientConfiguration.isPayloadSupportEnabled()) {
return super.deleteMessageBatch(deleteMessageBatchRequest);
}
- for (DeleteMessageBatchRequestEntry entry : deleteMessageBatchRequest.getEntries()) {
- String receiptHandle = entry.getReceiptHandle();
+ List- * 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
+ * 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.
+ * 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:
+ * Some 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
+ * &AttributeName.1=first
*
- * &Attribute.2=that
+ * &AttributeName.2=second
*
Id
.
+ * @throws InvalidBatchEntryIdException
+ * The Id
of a batch entry in a batch request doesn't abide by the specification.
+ * @throws SdkException
+ * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for
+ * catch all scenarios.
+ * @throws SdkClientException
+ * If any client side error occurs such as an IO related failure, failure to get credentials, etc.
+ * @throws SqsException
+ * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type.
+ * @sample SqsClient.ChangeMessageVisibilityBatch
+ * @see AWS API Documentation
*/
- public ChangeMessageVisibilityBatchResult changeMessageVisibilityBatch(
- ChangeMessageVisibilityBatchRequest changeMessageVisibilityBatchRequest) throws AmazonServiceException,
- AmazonClientException {
-
- for (ChangeMessageVisibilityBatchRequestEntry entry : changeMessageVisibilityBatchRequest.getEntries()) {
- if (isS3ReceiptHandle(entry.getReceiptHandle())) {
- entry.setReceiptHandle(getOrigReceiptHandle(entry.getReceiptHandle()));
+ public ChangeMessageVisibilityBatchResponse changeMessageVisibilityBatch(
+ ChangeMessageVisibilityBatchRequest changeMessageVisibilityBatchRequest) throws AwsServiceException,
+ SdkClientException {
+
+ List
- * Deletes the messages in a queue specified by the queue URL .
+ * Deletes the messages in a queue specified by the QueueURL
parameter.
+ *
+ * When you use the PurgeQueue
action, you can't retrieve any messages deleted from a queue.
*
- * IMPORTANT:When you use the PurgeQueue API, the deleted messages in - * the queue cannot be retrieved. + * The message deletion process takes up to 60 seconds. We recommend waiting for 60 seconds regardless of your + * queue's size. *
+ *
- * IMPORTANT: This does not delete the message payloads from Amazon S3.
+ * Messages sent to the queue before you call PurgeQueue
might be received but are deleted
+ * within the next minute.
*
- * 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.
+ * Messages sent to the queue after you call PurgeQueue
might be deleted while the queue is
+ * being purged.
*
PurgeQueue
request within the last
+ * 60 seconds (the time it can take to delete the messages in the queue).
+ * @throws SdkException
+ * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for
+ * catch all scenarios.
+ * @throws SdkClientException
+ * If any client side error occurs such as an IO related failure, failure to get credentials, etc.
+ * @throws SqsException
+ * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type.
+ * @sample SqsClient.PurgeQueue
+ * @see AWS API
+ * Documentation
*/
- public PurgeQueueResult purgeQueue(PurgeQueueRequest purgeQueueRequest)
- throws AmazonServiceException, AmazonClientException {
+ public PurgeQueueResponse purgeQueue(PurgeQueueRequest purgeQueueRequest)
+ throws AwsServiceException, SdkClientException {
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);
+ throw SdkClientException.create(errorMessage);
}
- purgeQueueRequest.getRequestClientOptions().appendUserAgent(USER_AGENT_HEADER);
+ PurgeQueueRequest.Builder purgeQueueRequestBuilder = purgeQueueRequest.toBuilder();
+ appendUserAgent(purgeQueueRequestBuilder);
- return super.purgeQueue(purgeQueueRequest);
+ return super.purgeQueue(purgeQueueRequestBuilder.build());
}
private void checkMessageAttributes(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] - *
- * - * @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) { - 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
- * 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) { - return amazonSqsToBeExtended.receiveMessage(receiveMessageRequest); - } - - /** - *
- * Deletes the specified message from the specified queue. 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. + * Delivers a message to the specified queue. *
+ *- * 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. + * A message can include only XML, JSON, and unformatted text. The following Unicode characters are allowed: *
- * - * @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) { - 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.
+ * #x9
| #xA
| #xD
| #x20
to #xD7FF
|
+ * #xE000
to #xFFFD
| #x10000
to #x10FFFF
*
- * 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] + * Any characters not included in this list will be rejected. For more information, see the W3C specification for characters. *
+ *
- * Retrieves one or more messages, with a maximum limit of 10 messages, from
- * the specified queue. Long poll support is enabled by using the
- * WaitTimeSeconds
parameter. For more information, see Amazon SQS Long Poll in the Amazon SQS Developer Guide .
+ * Retrieves one or more messages (up to 10), from the specified queue. Using the WaitTimeSeconds
+ * parameter enables long-poll support. For more information, see Amazon
+ * SQS Long Polling in the Amazon Simple Queue Service 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.
+ * Short poll is the default behavior where a weighted random set of machines is sampled on a
+ * ReceiveMessage
call. Thus, only the messages on the sampled machines are returned. If the number of
+ * messages in the queue is small (fewer than 1,000), you most likely 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. If this happens, repeat the request.
*
* For each message returned, the response includes the following: *
- * *- * Message body + * The message body. *
*- * MD5 digest of the message body. For information about MD5, go to - * http://www.faqs.org/rfcs/rfc1321.html . + * An MD5 digest of the message body. For information about MD5, see RFC1321. *
*
- * Message ID you received when you sent the message to the queue.
+ * The MessageId
you received when you sent the message to the queue.
*
- * Receipt handle. + * The receipt handle. *
*- * Message attributes. + * The message attributes. *
*- * MD5 digest of the message attributes. + * An 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 . + * The receipt handle is the identifier you must provide when deleting the message. For more information, see Queue and Message Identifiers in the Amazon Simple Queue Service 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 .
+ * You can provide the VisibilityTimeout
parameter in your request. The parameter is applied to the
+ * messages that Amazon SQS returns in the response. If you don't 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 Simple Queue Service 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. + * A message that isn't deleted or a message whose visibility isn't extended before the visibility timeout expires + * counts as a failed receive. Depending on the configuration of the queue, the message might be sent to the + * dead-letter queue. *
+ *+ * In the future, new attributes might be added. If you write code that calls this action, we recommend that you + * structure your code so that it can handle new attributes gracefully. + *
+ *ReceiveMessage
returns this error if the
+ * maximum number of inflight messages is reached and AddPermission
returns this error if the
+ * maximum number of permissions for the queue is reached.
+ * @throws SdkException
+ * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for
+ * catch all scenarios.
+ * @throws SdkClientException
+ * If any client side error occurs such as an IO related failure, failure to get credentials, etc.
+ * @throws SqsException
+ * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type.
+ * @sample SqsClient.ReceiveMessage
+ * @see AWS API
+ * Documentation
*/
- public ReceiveMessageResult receiveMessage(String queueUrl) throws AmazonServiceException, AmazonClientException {
-
- return amazonSqsToBeExtended.receiveMessage(queueUrl);
+ public ReceiveMessageResponse receiveMessage(ReceiveMessageRequest receiveMessageRequest) {
+ return amazonSqsToBeExtended.receiveMessage(receiveMessageRequest);
}
/**
*
- * Deletes the specified message from the specified queue. 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.
+ * Deletes the specified message from the specified queue. To select the message to delete, use the
+ * ReceiptHandle
of the message (not the MessageId
which you receive when you send
+ * the message). Amazon SQS can delete a message from a queue even if a visibility timeout setting causes the
+ * message to be locked by another consumer. Amazon SQS automatically deletes messages left in a queue longer than
+ * the retention period configured for the queue.
*
- * 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.
+ * The ReceiptHandle
is associated with a specific instance of receiving a message. If you
+ * receive a message more than once, the ReceiptHandle
is different each time you receive a message.
+ * When you use the DeleteMessage
action, you must provide the most recently received
+ * ReceiptHandle
for the message (otherwise, the request succeeds, 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. + * For standard queues, it is possible to receive a message even after you delete it. This might happen on rare + * occasions if one of the servers which stores a copy of the message is unavailable when you send the request to + * delete the message. The copy remains on the server and might be returned to you during a subsequent receive + * request. You should ensure that your application is idempotent, so that receiving a message more than once does + * not cause issues. *
+ *
- * 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
+ * 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 Amazon SQS system. Changes made to the
* MessageRetentionPeriod
attribute can take up to 15 minutes.
*
+ * In the future, new attributes might be added. If you write code that calls this action, we recommend that you + * structure your code so that it can handle new attributes gracefully. + *
+ *+ * Cross-account permissions don't apply to this action. For more information, see Grant Cross-Account Permissions to a Role and a User Name in the Amazon Simple Queue Service 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.
+ * To remove the ability to change queue permissions, you must deny permission to the AddPermission
,
+ * RemovePermission
, and SetQueueAttributes
actions in your IAM policy.
*
- * 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
+ * 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.
+ * 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:
+ * Some 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
+ * &AttributeName.1=first
*
- * &Attribute.2=that
+ * &AttributeName.2=second
*
Id
.
+ * @throws InvalidBatchEntryIdException
+ * The Id
of a batch entry in a batch request doesn't abide by the specification.
+ * @throws SdkException
+ * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for
+ * catch all scenarios.
+ * @throws SdkClientException
+ * If any client side error occurs such as an IO related failure, failure to get credentials, etc.
+ * @throws SqsException
+ * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type.
+ * @sample SqsClient.ChangeMessageVisibilityBatch
+ * @see AWS API Documentation
*/
- public ChangeMessageVisibilityBatchResult changeMessageVisibilityBatch(
- ChangeMessageVisibilityBatchRequest changeMessageVisibilityBatchRequest) throws AmazonServiceException,
- AmazonClientException {
+ public ChangeMessageVisibilityBatchResponse changeMessageVisibilityBatch(
+ ChangeMessageVisibilityBatchRequest changeMessageVisibilityBatchRequest) throws AwsServiceException,
+ SdkClientException {
return amazonSqsToBeExtended.changeMessageVisibilityBatch(changeMessageVisibilityBatchRequest);
}
/**
* - * 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 .) + * Changes the visibility timeout of a specified message in a queue to a new value. The default visibility timeout + * for a message is 30 seconds. The minimum is 0 seconds. The maximum is 12 hours. For more information, see + * Visibility Timeout in the Amazon Simple Queue Service Developer Guide. + *
+ *
+ * For example, you have a message with a visibility timeout of 5 minutes. After 3 minutes, you call
+ * ChangeMessageVisibility
with a timeout of 10 minutes. You can continue to call
+ * ChangeMessageVisibility
to extend the visibility timeout to the maximum allowed time. If you try to
+ * extend the visibility timeout beyond the maximum, your request is rejected.
+ *
+ * An Amazon SQS message has three basic states: + *
+ *+ * Sent to a queue by a producer. + *
+ *+ * Received from the queue by a consumer. + *
+ *+ * Deleted from the queue. + *
+ *+ * A message is considered to be stored after it is sent to a queue by a producer, but not yet received from + * the queue by a consumer (that is, between states 1 and 2). There is no limit to the number of stored messages. A + * message is considered to be in flight after it is received from a queue by a consumer, but not yet deleted + * from the queue (that is, between states 2 and 3). There is a limit to the number of inflight messages. *
*
- * 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.
+ * Limits that apply to inflight messages are unrelated to the unlimited number of stored messages.
*
- * 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.
+ * For most standard queues (depending on queue traffic and message backlog), there can be a maximum of
+ * approximately 120,000 inflight messages (received from a queue by a consumer, but not yet deleted from the
+ * queue). If you reach this limit, Amazon SQS returns the OverLimit
error message. To avoid reaching
+ * the limit, you should delete messages from the queue after they're processed. You can also increase the number of
+ * queues you use to process your messages. To request a limit increase, file a support request.
*
- * 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. + * For FIFO queues, there can be a maximum of 20,000 inflight messages (received from a queue by a consumer, but not + * yet deleted from the queue). If you reach this limit, Amazon SQS returns no error messages. *
+ *
- * 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.
+ * If you attempt to set the VisibilityTimeout
to a value greater than the maximum time left, Amazon
+ * SQS returns an error. Amazon SQS doesn't automatically recalculate and increase the timeout to the maximum
+ * remaining time.
*
+ * Unlike with a queue, when you change the visibility timeout for a specific message the timeout value is applied
+ * immediately but isn't saved in memory for that message. If you don't delete a message after it is received, the
+ * visibility timeout for the message reverts to the original timeout value (not to the value you set using the
+ * ChangeMessageVisibility
action) the next time the message is received.
+ *
- * Returns the URL of an existing queue. This action provides a simple way - * to retrieve the URL of an Amazon SQS queue. + * Returns the URL of an existing 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 .
+ * 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 see Allow Developers to Write Messages to a Shared Queue in the Amazon Simple Queue Service Developer
+ * Guide.
*
- * Revokes any permissions in the queue policy that matches the specified
- * Label
parameter. Only the owner of the queue can remove
- * permissions.
+ * Revokes any permissions in the queue policy that matches the specified Label
parameter.
+ *
+ * Only the owner of a queue can remove permissions from it. + *
+ *+ * Cross-account permissions don't apply to this action. For more information, see Grant Cross-Account Permissions to a Role and a User Name in the Amazon Simple Queue Service Developer + * Guide. + *
+ *
+ * To remove the ability to change queue permissions, you must deny permission to the AddPermission
,
+ * RemovePermission
, and SetQueueAttributes
actions in your IAM policy.
*
- * 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: + * Gets attributes for the specified queue. *
+ *
- * &Attribute.1=this
- *
- * &Attribute.2=that
+ * To determine whether a queue is FIFO, you
+ * can check whether QueueName
ends with the .fifo
suffix.
*
- * 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).
+ * Delivers up to ten messages to the specified queue. This is a batch version of SendMessage.
+ * For a FIFO queue, multiple messages within a single batch are enqueued in the order they are sent.
+ *
+ * The result of sending each message is reported individually in the response. 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
.
+ *
+ * The maximum allowed individual message size and the maximum total payload size (the sum of the individual lengths + * of all of the batched messages) are both 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). + * A message can include only XML, JSON, and unformatted text. The following Unicode characters are allowed: *
*
- * If the DelaySeconds
parameter is not specified for an entry,
- * the default for the queue is used.
+ * #x9
| #xA
| #xD
| #x20
to #xD7FF
|
+ * #xE000
to #xFFFD
| #x10000
to #x10FFFF
*
- * 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] + * Any characters not included in this list will be rejected. For more information, see the W3C specification for characters. *
+ *
- * 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.
+ * If you don't specify the DelaySeconds
parameter for an entry, Amazon SQS uses the default value for
+ * the queue.
*
- * 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:
+ * Some 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
+ * &AttributeName.1=first
*
- * &Attribute.2=that
+ * &AttributeName.2=second
*
Id
.
* @throws BatchRequestTooLongException
- * @throws UnsupportedOperationException
+ * The length of all the messages put together is more than the limit.
* @throws InvalidBatchEntryIdException
- * @throws EmptyBatchRequestException
- *
- * @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.
+ * The Id
of a batch entry in a batch request doesn't abide by the specification.
+ * @throws UnsupportedOperationException
+ * Error code 400. Unsupported operation.
+ * @throws SdkException
+ * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for
+ * catch all scenarios.
+ * @throws SdkClientException
+ * If any client side error occurs such as an IO related failure, failure to get credentials, etc.
+ * @throws SqsException
+ * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type.
+ * @sample SqsClient.SendMessageBatch
+ * @see AWS API
+ * Documentation
*/
- public SendMessageBatchResult sendMessageBatch(SendMessageBatchRequest sendMessageBatchRequest)
- throws AmazonServiceException, AmazonClientException {
+ public SendMessageBatchResponse sendMessageBatch(SendMessageBatchRequest sendMessageBatchRequest)
+ throws AwsServiceException, SdkClientException {
return amazonSqsToBeExtended.sendMessageBatch(sendMessageBatchRequest);
}
/**
*
- * Deletes the messages in a queue specified by the queue URL .
+ * Deletes the messages in a queue specified by the QueueURL
parameter.
+ *
+ * When you use the PurgeQueue
action, you can't retrieve any messages deleted from a queue.
*
- * IMPORTANT:When you use the PurgeQueue API, the deleted messages in - * the queue cannot be retrieved. + * The message deletion process takes up to 60 seconds. We recommend waiting for 60 seconds regardless of your + * queue's size. *
+ *
- * 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.
+ * Messages sent to the queue before you call PurgeQueue
might be received but are deleted
+ * within the next minute.
+ *
+ * Messages sent to the queue after you call PurgeQueue
might be deleted while the queue is
+ * being purged.
*
PurgeQueue
request within the last
+ * 60 seconds (the time it can take to delete the messages in the queue).
+ * @throws SdkException
+ * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for
+ * catch all scenarios.
+ * @throws SdkClientException
+ * If any client side error occurs such as an IO related failure, failure to get credentials, etc.
+ * @throws SqsException
+ * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type.
+ * @sample SqsClient.PurgeQueue
+ * @see AWS API
+ * Documentation
*/
- public PurgeQueueResult purgeQueue(PurgeQueueRequest purgeQueueRequest)
- throws AmazonServiceException, AmazonClientException {
+ public PurgeQueueResponse purgeQueue(PurgeQueueRequest purgeQueueRequest)
+ throws AwsServiceException, SdkClientException {
return amazonSqsToBeExtended.purgeQueue(purgeQueueRequest);
@@ -897,229 +700,280 @@ public PurgeQueueResult purgeQueue(PurgeQueueRequest purgeQueueRequest)
/**
*
- * Returns a list of your queues that have the RedrivePolicy queue attribute
- * configured with a dead letter queue.
+ * Returns a list of your queues that have the RedrivePolicy
queue attribute configured with a
+ * dead-letter queue.
+ *
+ * The ListDeadLetterSourceQueues
methods supports pagination. Set parameter MaxResults
in
+ * the request to specify the maximum number of results to be returned in the response. If you do not set
+ * MaxResults
, the response includes a maximum of 1,000 results. If you set MaxResults
and
+ * there are additional results to display, the response includes a value for NextToken
. Use
+ * NextToken
as a parameter in your next request to ListDeadLetterSourceQueues
to receive
+ * the next page of results.
*
- * For more information about using dead letter queues, see Using Amazon SQS Dead Letter Queues . + * For more information about using dead-letter queues, see Using Amazon SQS Dead-Letter Queues in the Amazon Simple Queue Service Developer Guide. *
* * @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. - * + * @return Result of the ListDeadLetterSourceQueues operation returned by the service. * @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. + * The specified queue doesn't exist. + * @throws SdkException + * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for + * catch all scenarios. + * @throws SdkClientException + * If any client side error occurs such as an IO related failure, failure to get credentials, etc. + * @throws SqsException + * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type. + * @sample SqsClient.ListDeadLetterSourceQueues + * @see AWS + * API Documentation */ - public ListDeadLetterSourceQueuesResult listDeadLetterSourceQueues( - ListDeadLetterSourceQueuesRequest listDeadLetterSourceQueuesRequest) throws AmazonServiceException, - AmazonClientException { + public ListDeadLetterSourceQueuesResponse listDeadLetterSourceQueues( + ListDeadLetterSourceQueuesRequest listDeadLetterSourceQueuesRequest) throws AwsServiceException, + SdkClientException { 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.
+ * Deletes the queue specified by the QueueUrl
, regardless of the queue's contents.
*
- * IMPORTANT: Use DeleteQueue with care; once you delete your queue,
- * any messages in the queue are no longer available.
+ * Be careful with the DeleteQueue
action: When you delete a 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.
+ * 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 60 seconds the queue and the message you sent no longer exist.
*
- * 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 . + * When you delete a queue, you must wait at least 60 seconds before creating a queue with the same name. *
+ *+ * Cross-account permissions don't apply to this action. For more information, see Grant Cross-Account Permissions to a Role and a User Name in the Amazon Simple Queue Service 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
- * QueueNamePrefix
parameter, only queues with a name beginning
- * with the specified value are returned.
+ * Returns a list of your queues in the current region. The response includes a maximum of 1,000 results. If you
+ * specify a value for the optional QueueNamePrefix
parameter, only queues with a name that begins with
+ * the specified value are returned.
+ *
+ * The listQueues
methods supports pagination. Set parameter MaxResults
in the request to
+ * specify the maximum number of results to be returned in the response. If you do not set MaxResults
,
+ * the response includes a maximum of 1,000 results. If you set MaxResults
and there are additional
+ * results to display, the response includes a value for NextToken
. Use NextToken
as a
+ * parameter in your next request to listQueues
to receive the next page of results.
+ *
+ * Cross-account permissions don't apply to this action. For more information, see Grant Cross-Account Permissions to a Role and a User Name in the Amazon Simple Queue Service Developer + * Guide. *
+ *
- * 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.
+ * Deletes up to ten messages from the specified queue. This is a batch version of
+ * DeleteMessage.
The result of the 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.
+ * 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:
+ * Some 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
+ * &AttributeName.1=first
*
- * &Attribute.2=that
+ * &AttributeName.2=second
*
Id
.
+ * @throws InvalidBatchEntryIdException
+ * The Id
of a batch entry in a batch request doesn't abide by the specification.
+ * @throws SdkException
+ * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for
+ * catch all scenarios.
+ * @throws SdkClientException
+ * If any client side error occurs such as an IO related failure, failure to get credentials, etc.
+ * @throws SqsException
+ * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type.
+ * @sample SqsClient.DeleteMessageBatch
+ * @see AWS API
+ * Documentation
*/
- public DeleteMessageBatchResult deleteMessageBatch(DeleteMessageBatchRequest deleteMessageBatchRequest)
- throws AmazonServiceException, AmazonClientException {
+ public DeleteMessageBatchResponse deleteMessageBatch(DeleteMessageBatchRequest deleteMessageBatchRequest)
+ throws AwsServiceException, SdkClientException {
return amazonSqsToBeExtended.deleteMessageBatch(deleteMessageBatchRequest);
}
/**
*
- * 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.
+ * Creates a new standard or FIFO queue. You can pass one or more attributes in the request. Keep the following in
+ * mind:
+ *
+ * If you don't specify the FifoQueue
attribute, Amazon SQS creates a standard queue.
+ *
+ * You can't change the queue type after you create it and you can't convert an existing standard queue into a FIFO + * queue. You must either create a new FIFO queue for your application or delete your existing standard queue and + * recreate it as a FIFO queue. For more information, see Moving From a Standard Queue to a FIFO Queue in the Amazon Simple Queue Service Developer Guide. + *
+ *+ * If you don't provide a value for an attribute, the queue is created with the default value for the attribute. + *
+ *+ * If you delete a queue, you must wait at least 60 seconds before creating a queue with the same name. *
+ *+ * To successfully create a new queue, you must provide a queue name that adheres to the limits + * related to queues and is unique within the scope of your queues. + *
+ *- * NOTE: If you delete a queue, you must wait at least 60 seconds - * before creating a queue with the same name. + * After you create a queue, you must wait at least one second after the queue is created to be able to use the + * queue. *
+ *
+ * To get the queue URL, use the GetQueueUrl
action. GetQueueUrl
+ * requires only the QueueName
parameter. be aware of existing queue names:
+ *
- * 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.
+ * 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.
*
- * NOTE: Use GetQueueUrl to get a queue's URL. GetQueueUrl requires
- * only the QueueName parameter.
+ * If the queue name, attribute names, or attribute values don't match an existing queue, CreateQueue
+ * returns an error.
*
- * 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.
+ * Some 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:
*
- * 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:
+ * &AttributeName.1=first
*
- * &Attribute.1=this
+ * &AttributeName.2=second
*
- * &Attribute.2=that
+ * Cross-account permissions don't apply to this action. For more information, see Grant Cross-Account Permissions to a Role and a User Name in the Amazon Simple Queue Service Developer
+ * Guide.
*
* Adds a permission to a queue for a specific - * principal . This allows for sharing access to the queue. + * href="https://docs.aws.amazon.com/general/latest/gr/glos-chap.html#P">principal. This allows 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 . + * When you create a queue, you have full control access rights for the queue. Only you, the owner of the queue, can + * grant or deny permissions to the queue. For more information about these permissions, see Allow Developers to Write Messages to a Shared Queue in the Amazon Simple Queue Service 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.
+ * AddPermission
generates a policy for you. You can use SetQueueAttributes
to
+ * upload your policy. For more information, see Using Custom Policies with the Amazon SQS Access Policy Language in the Amazon Simple Queue Service
+ * 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: + * An Amazon SQS policy can have a maximum of 7 actions. *
+ *
- * &Attribute.1=this
+ * To remove the ability to change queue permissions, you must deny permission to the AddPermission
,
+ * RemovePermission
, and SetQueueAttributes
actions in your IAM policy.
*
- * &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.
+ * Some 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:
*
- * 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:
+ * &AttributeName.1=first
*
- * &Attribute.1=this
+ * &AttributeName.2=second
*
- * &Attribute.2=that
+ * Cross-account permissions don't apply to this action. For more information, see Grant Cross-Account Permissions to a Role and a User Name in the Amazon Simple Queue Service Developer
+ * Guide.
*
- * 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.
+ * The specified action violates a limit. For example,
- * 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);
+ public AddPermissionResponse addPermission(AddPermissionRequest addPermissionRequest)
+ throws AwsServiceException, SdkClientException, OverLimitException {
+ return amazonSqsToBeExtended.addPermission(addPermissionRequest);
}
/**
- * 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.
+ *
+ * Returns a list of your queues in the current region. The response includes a maximum of 1,000 results. If you
+ * specify a value for the optional
+ * The
+ * Cross-account permissions don't apply to this action. For more information, see Grant Cross-Account Permissions to a Role and a User Name in the Amazon Simple Queue Service Developer
+ * Guide.
+ * 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.
- *
+ * @param addPermissionRequest
+ * @return Result of the AddPermission operation returned by the service.
* @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, ListReceiveMessage
returns this error if the
+ * maximum number of inflight messages is reached and AddPermission
returns this error if the
+ * maximum number of permissions for the queue is reached.
+ * @throws SdkException
+ * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for
+ * catch all scenarios.
+ * @throws SdkClientException
+ * If any client side error occurs such as an IO related failure, failure to get credentials, etc.
+ * @throws SqsException
+ * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type.
+ * @sample SqsClient.AddPermission
+ * @see AWS API
+ * Documentation
*/
- 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.
- * QueueNamePrefix
parameter, only queues with a name that begins with
+ * the specified value are returned.
+ * listQueues
methods supports pagination. Set parameter MaxResults
in the request to
+ * specify the maximum number of results to be returned in the response. If you do not set MaxResults
,
+ * the response includes a maximum of 1,000 results. If you set MaxResults
and there are additional
+ * results to display, the response includes a value for NextToken
. Use NextToken
as a
+ * parameter in your next request to listQueues
to receive the next page of results.
+ *