diff --git a/demo/README.md b/demo/README.md
new file mode 100644
index 0000000..10600a3
--- /dev/null
+++ b/demo/README.md
@@ -0,0 +1,159 @@
+# Simple Inline Test Demo
+
+## TL;DR
+
+```bash
+bash run.sh junit
+# OR
+bash run.sh assert
+```
+
+## Demo Structure
+
+This demo is made of the following files and directories:
+
+* `amazon-sqs-java-extended-client-lib`: The target project to conduct the demo.
+* `inlinetest-1.0.jar`: Jar for ITest -- the Java inline test framework.
+* `junit-platform-console-standalone-1.12.0.jar`: JUnit standalone jar to execute JUnit inline tests with.
+* `run.sh`: A `bash` script to demonstrate the process of running an inline test.
+* `inline-tests`: This generated directory contains generated sources and bytecode of the inline test.
+* `clean.sh`: A `bash` script to clean files generated during the demo.
+* `diff.txt`: Shows the changes made to the project under demonstration. Contains lines for adding inline test dependency to `pom.xml`, adding imports, and adding the inline test itself.
+* `out.txt`: Generated output of running the demo.
+
+## Output of the script
+
+These are some notable files that will be generated as a result of running the script, represented in relative path from the `demo` directory:
+
+* `amazon-sqs-java-extended-client-lib/deps.txt`: A colon-separated list of dependencies for the project. This file is used during parsing, compiling and executing the inline test.
+* `inline-tests/src/AmazonSQSExtendedClient_0Test.java`: The test class that is obtained by parsing an inline test.
+* `inline-tests/bin/com/amazon/sqs/javamessaging/AmazonSQSExtendedClient_0Test.class`: Generated bytecode from the parsed inline test class.
+* `out.txt`: Generated output of running the demo.
+
+## Target Statement
+
+Inline tests are designed to provide lightweight oracles for various developer-chosen inputs and outputs for complex single statements. As of now, the ITest framework majorly supports inline tests for 4 kinds of target statements:
+
+* Bit manipulation
+* String manipulation
+* Regular expressions
+* Java Stream
+
+In this example, on line 887-888 of the source file `amazon-sqs-java-extended-client-lib/src/main/java/com/amazon/sqs/javamessaging/AmazonSQSExtendedClient.java`, there is a string manipulation target statement:
+
+```java
+// SQSExtendedClientConstants.S3_KEY_MARKER is "-..s3Key..-"
+int secondOccurence = receiptHandle.indexOf(SQSExtendedClientConstants.S3_KEY_MARKER,
+ receiptHandle.indexOf(SQSExtendedClientConstants.S3_KEY_MARKER) + 1);
+```
+
+There are more complicated examples in the wild, but this can be a good case for demonstration.
+
+## Inline Test
+
+An inline test can be added below this statement:
+
+```java
+itest().given(receiptHandle, "1FOc=-..s3Key..-y*-@T-..s3Key..-").checkEq(secondOccurence, 21);
+```
+
+It checks that if the variables on the right hand side of the assignment are given the values specified in the `given` clause, the value on the left hand side (`secondOccurence`) is expected to be `21`. The developer can specify multiple such inline tests below a target statement to test for different cases.
+
+Before adding the inline test, the method containing the target statement looks like this:
+
+```java
+private String getOrigReceiptHandle(String receiptHandle) {
+ int secondOccurence = receiptHandle.indexOf(SQSExtendedClientConstants.S3_KEY_MARKER,
+ receiptHandle.indexOf(SQSExtendedClientConstants.S3_KEY_MARKER) + 1);
+ return receiptHandle.substring(secondOccurence + SQSExtendedClientConstants.S3_KEY_MARKER.length());
+}
+```
+
+After adding the inline test, the enclosing method of the target statement looks like this:
+
+```java
+private String getOrigReceiptHandle(String receiptHandle) {
+ int secondOccurence = receiptHandle.indexOf(SQSExtendedClientConstants.S3_KEY_MARKER,
+ receiptHandle.indexOf(SQSExtendedClientConstants.S3_KEY_MARKER) + 1);
+ itest().given(receiptHandle, "1FOc=-..s3Key..-y*-@T-..s3Key..-").checkEq(secondOccurence, 21);
+ return receiptHandle.substring(secondOccurence + SQSExtendedClientConstants.S3_KEY_MARKER.length());
+}
+```
+
+In this example, the developer assigns the index of the second occurrence of `"-..s3Key..-"` in `receiptHandle` to the variable `secondOccurence`. Therefore, the inline test constructed for this example can provide different values for `receiptHandle` using the `given` clause, and check their corresponding values of `secondOccurence` with the `checkEq` clause.
+
+## Parsing Inline Test
+
+Parsing an inline test is defined as the process of using the ITest tool to turn a (target statement, inline test) pair, in this case these two lines:
+
+```java
+int secondOccurence = receiptHandle.indexOf(SQSExtendedClientConstants.S3_KEY_MARKER,
+ receiptHandle.indexOf(SQSExtendedClientConstants.S3_KEY_MARKER) + 1);
+itest().given(receiptHandle, "1FOc=-..s3Key..-y*-@T-..s3Key..-").checkEq(secondOccurence, 21);
+```
+
+to either:
+
+1. a class with a main method and uses Java's default asserts
+2. or a JUnit class that uses JUnit's asserts
+
+This process is demonstrated in `run.sh`'s `parse_inline_test` function.
+
+### Assertion Style
+
+In the process of parsing an inline test, one can choose to parse inline into either a simple Java class, or a JUnit Java class.
+
+### Content of the generated JUnit class
+
+```java
+package com.amazon.sqs.javamessaging;
+
+// Other imports omitted for space
+import org.inlinetest.ITest;
+import static org.inlinetest.ITest.itest;
+import static org.inlinetest.ITest.group;
+
+public class AmazonSQSExtendedClient_0Test {
+
+ @Test
+ void testLine889() throws Exception {
+ String receiptHandle = "1FOc=-..s3Key..-y*-@T-..s3Key..-";
+ int secondOccurence = receiptHandle.indexOf(SQSExtendedClientConstants.S3_KEY_MARKER, receiptHandle.indexOf(SQSExtendedClientConstants.S3_KEY_MARKER) + 1);
+ assertEquals(21, secondOccurence);
+ }
+}
+```
+
+### Content of the generated assertion class
+
+```java
+package com.amazon.sqs.javamessaging;
+
+// Other imports omitted for space
+import org.inlinetest.ITest;
+import static org.inlinetest.ITest.itest;
+import static org.inlinetest.ITest.group;
+
+public class AmazonSQSExtendedClient_0Test {
+
+ static void testLine889() {
+ String receiptHandle = "1FOc=-..s3Key..-y*-@T-..s3Key..-";
+ int secondOccurence = receiptHandle.indexOf(SQSExtendedClientConstants.S3_KEY_MARKER, receiptHandle.indexOf(SQSExtendedClientConstants.S3_KEY_MARKER) + 1);
+ assert Objects.equals(secondOccurence, 21);
+ }
+
+ public static void main(String[] args) {
+ testLine889();
+ System.out.println("inline tests passed: 1");
+ }
+}
+```
+
+## Compiling Inline Test
+
+This is just using Java compiler to compile the parsed class. Details in `run.sh`'s `compile_inline_test` function.
+
+## Executing Inline Test
+
+Depending on the assertion style parameter, one can either directly use `java` to execute the inline test class, or use JUnit standalone jar to execute the JUnit inline test class. Details in `run.sh`'s `execute_inline_test` function.
+
diff --git a/demo/amazon-sqs-java-extended-client-lib/LICENSE.txt b/demo/amazon-sqs-java-extended-client-lib/LICENSE.txt
new file mode 100644
index 0000000..2c99318
--- /dev/null
+++ b/demo/amazon-sqs-java-extended-client-lib/LICENSE.txt
@@ -0,0 +1,51 @@
+Apache License
+Version 2.0, January 2004
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.
+
+"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.
+
+"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
+
+"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.
+
+"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.
+
+"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.
+
+"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).
+
+"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.
+
+"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."
+
+"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
+
+ 1. You must give any other recipients of the Work or Derivative Works a copy of this License; and
+ 2. You must cause any modified files to carry prominent notices stating that You changed the files; and
+ 3. You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
+ 4. If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.
+
+You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
diff --git a/demo/amazon-sqs-java-extended-client-lib/README.md b/demo/amazon-sqs-java-extended-client-lib/README.md
new file mode 100644
index 0000000..a91cfc6
--- /dev/null
+++ b/demo/amazon-sqs-java-extended-client-lib/README.md
@@ -0,0 +1,46 @@
+Amazon SQS Extended Client Library for Java
+===========================================
+The **Amazon SQS Extended Client Library for Java** enables you to manage Amazon SQS message payloads with Amazon S3. This is especially useful for storing and retrieving messages with a message payload size greater than the current SQS limit of 256 KB, up to a maximum of 2 GB. Specifically, you can use this library to:
+
+* Specify whether message payloads are always stored in Amazon S3 or only when a message's size exceeds 256 KB.
+
+* Send a message that references a single message object stored in an Amazon S3 bucket.
+
+* Get the corresponding message object from an Amazon S3 bucket.
+
+* Delete the corresponding message object from an Amazon S3 bucket.
+
+You can download release builds through the [releases section of this](https://github.com/awslabs/amazon-sqs-java-extended-client-lib) project.
+
+For more information on using the amazon-sqs-java-extended-client-lib, see our getting started guide [here](http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/s3-messages.html).
+
+## Getting Started
+
+* **Sign up for AWS** -- Before you begin, you need an AWS account. For more information about creating an AWS account and retrieving your AWS credentials, see [AWS Account and Credentials](http://docs.aws.amazon.com/AWSSdkDocsJava/latest/DeveloperGuide/java-dg-setup.html) in the AWS SDK for Java Developer Guide.
+* **Sign up for Amazon SQS** -- Go to the Amazon [SQS console](https://console.aws.amazon.com/sqs/home?region=us-east-1) to sign up for the service.
+* **Minimum requirements** -- To use the sample application, you'll need Java 7 (or later) and [Maven 3](http://maven.apache.org/). For more information about the requirements, see the [Getting Started](http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/s3-messages.html) section of the Amazon SQS Developer Guide.
+* **Download** -- Download the [latest preview release](https://github.com/awslabs/amazon-sqs-java-extended-client-lib/releases) or pick it up from Maven:
+### Version 2.x
+```xml
+
+ * The Amazon SQS extended client enables sending and receiving large messages + * via Amazon S3. You can use this library to: + *
+ * + *+ * All service calls made using this new client object are blocking, and + * will not return until the service call completes. + * + * @param sqsClient + * The Amazon SQS client to use to connect to Amazon SQS. + */ + public AmazonSQSExtendedClient(SqsClient sqsClient) { + this(sqsClient, new ExtendedClientConfiguration()); + } + + /** + * Constructs a new Amazon SQS extended client to invoke service methods on + * Amazon SQS with extended functionality using the specified Amazon SQS + * client object. + * + *
+ * All service calls made using this new client object are blocking, and + * will not return until the service call completes. + * + * @param sqsClient + * The Amazon SQS client to use to connect to Amazon SQS. + * @param extendedClientConfig + * The extended client configuration options controlling the + * functionality of this client. + */ + public AmazonSQSExtendedClient(SqsClient sqsClient, ExtendedClientConfiguration extendedClientConfig) { + super(sqsClient); + this.clientConfiguration = new ExtendedClientConfiguration(extendedClientConfig); + S3Dao s3Dao = new S3Dao(clientConfiguration.getS3Client(), + clientConfiguration.getServerSideEncryptionStrategy(), + clientConfiguration.getObjectCannedACL()); + this.payloadStore = new S3BackedPayloadStore(s3Dao, clientConfiguration.getS3BucketName()); + } + + /** + *
+ * Delivers a message to the specified queue. + *
+ *+ * 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. + *
+ *
+ * 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. 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: + *
+ *+ * The message body. + *
+ *+ * An MD5 digest of the message body. For information about MD5, see RFC1321. + *
+ *
+ * The MessageId
you received when you sent the message to the queue.
+ *
+ * The receipt handle. + *
+ *+ * 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 Simple Queue Service 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.
+ *
+ * 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 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 SdkClientException.create(errorMessage);
+ }
+
+ ReceiveMessageRequest.Builder receiveMessageRequestBuilder = receiveMessageRequest.toBuilder();
+ appendUserAgent(receiveMessageRequestBuilder);
+
+ if (!clientConfiguration.isPayloadSupportEnabled()) {
+ return super.receiveMessage(receiveMessageRequestBuilder.build());
+ }
+ //Remove before adding to avoid any duplicates
+ List
+ * 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.
+ *
+ * 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).
+ *
+ * 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. + *
+ *+ * 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. + *
+ *+ * Limits that apply to inflight messages are unrelated to the unlimited number of stored 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.
+ *
+ * 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. + *
+ *
+ * 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.
+ * 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). + *
+ *+ * 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. + *
+ *
+ * If you don't specify the DelaySeconds
parameter for an entry, Amazon SQS uses the default value for
+ * the queue.
+ *
+ * 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:
+ *
+ * &AttributeName.1=first
+ *
+ * &AttributeName.2=second
+ *
Id
.
+ * @throws BatchRequestTooLongException
+ * The length of all the messages put together is more than the limit.
+ * @throws InvalidBatchEntryIdException
+ * 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 SendMessageBatchResponse sendMessageBatch(SendMessageBatchRequest sendMessageBatchRequest) {
+
+ if (sendMessageBatchRequest == null) {
+ String errorMessage = "sendMessageBatchRequest cannot be null.";
+ LOG.error(errorMessage);
+ throw SdkClientException.create(errorMessage);
+ }
+
+ SendMessageBatchRequest.Builder sendMessageBatchRequestBuilder = sendMessageBatchRequest.toBuilder();
+ appendUserAgent(sendMessageBatchRequestBuilder);
+ sendMessageBatchRequest = sendMessageBatchRequestBuilder.build();
+
+ if (!clientConfiguration.isPayloadSupportEnabled()) {
+ return super.sendMessageBatch(sendMessageBatchRequest);
+ }
+
+ List
+ * 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.
+ *
+ * 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
.
+ *
+ * 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:
+ *
+ * &AttributeName.1=first
+ *
+ * &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 DeleteMessageBatchResponse deleteMessageBatch(DeleteMessageBatchRequest deleteMessageBatchRequest) {
+
+ if (deleteMessageBatchRequest == null) {
+ String errorMessage = "deleteMessageBatchRequest cannot be null.";
+ LOG.error(errorMessage);
+ throw SdkClientException.create(errorMessage);
+ }
+
+ DeleteMessageBatchRequest.Builder deleteMessageBatchRequestBuilder = deleteMessageBatchRequest.toBuilder();
+ appendUserAgent(deleteMessageBatchRequestBuilder);
+
+ if (!clientConfiguration.isPayloadSupportEnabled()) {
+ return super.deleteMessageBatch(deleteMessageBatchRequest);
+ }
+
+ List
+ * 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.
+ *
+ * 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
.
+ *
+ * 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:
+ *
+ * &AttributeName.1=first
+ *
+ * &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 ChangeMessageVisibilityBatchResponse changeMessageVisibilityBatch(
+ ChangeMessageVisibilityBatchRequest changeMessageVisibilityBatchRequest) throws AwsServiceException,
+ SdkClientException {
+
+ List
+ * 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.
+ *
+ * The message deletion process takes up to 60 seconds. We recommend waiting for 60 seconds regardless of your + * queue's size. + *
+ *
+ * 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 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 SdkClientException.create(errorMessage);
+ }
+
+ PurgeQueueRequest.Builder purgeQueueRequestBuilder = purgeQueueRequest.toBuilder();
+ appendUserAgent(purgeQueueRequestBuilder);
+
+ return super.purgeQueue(purgeQueueRequestBuilder.build());
+ }
+
+ private void checkMessageAttributes(Map+ * Delivers a message to the specified queue. + *
+ *+ * 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. + *
+ *
+ * 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. 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: + *
+ *+ * The message body. + *
+ *+ * An MD5 digest of the message body. For information about MD5, see RFC1321. + *
+ *
+ * The MessageId
you received when you sent the message to the queue.
+ *
+ * The receipt handle. + *
+ *+ * 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 Simple Queue Service 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.
+ *
+ * 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 ReceiveMessageResponse receiveMessage(ReceiveMessageRequest receiveMessageRequest) {
+ return amazonSqsToBeExtended.receiveMessage(receiveMessageRequest);
+ }
+
+ /**
+ *
+ * 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.
+ *
+ * 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).
+ *
+ * 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 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. + *
+ *
+ * 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
+ * ChangeMessageVisibilityBatch
action.
+ *
+ * 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
.
+ *
+ * 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:
+ *
+ * &AttributeName.1=first
+ *
+ * &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 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 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. + *
+ *+ * Limits that apply to inflight messages are unrelated to the unlimited number of stored 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.
+ *
+ * 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. + *
+ *
+ * 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 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 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 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. + *
+ *
+ * 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.
+ * 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). + *
+ *+ * 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. + *
+ *
+ * If you don't specify the DelaySeconds
parameter for an entry, Amazon SQS uses the default value for
+ * the queue.
+ *
+ * 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:
+ *
+ * &AttributeName.1=first
+ *
+ * &AttributeName.2=second
+ *
Id
.
+ * @throws BatchRequestTooLongException
+ * The length of all the messages put together is more than the limit.
+ * @throws InvalidBatchEntryIdException
+ * 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 SendMessageBatchResponse sendMessageBatch(SendMessageBatchRequest sendMessageBatchRequest)
+ throws AwsServiceException, SdkClientException {
+
+ return amazonSqsToBeExtended.sendMessageBatch(sendMessageBatchRequest);
+ }
+
+ /**
+ *
+ * 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.
+ *
+ * The message deletion process takes up to 60 seconds. We recommend waiting for 60 seconds regardless of your + * queue's size. + *
+ *
+ * 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 PurgeQueueResponse purgeQueue(PurgeQueueRequest purgeQueueRequest)
+ throws AwsServiceException, SdkClientException {
+
+ return amazonSqsToBeExtended.purgeQueue(purgeQueueRequest);
+
+ }
+
+ /**
+ *
+ * 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 in the Amazon Simple Queue Service Developer Guide. + *
+ * + * @param listDeadLetterSourceQueuesRequest + * @return Result of the ListDeadLetterSourceQueues operation returned by the service. + * @throws QueueDoesNotExistException + * 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 ListDeadLetterSourceQueuesResponse listDeadLetterSourceQueues( + ListDeadLetterSourceQueuesRequest listDeadLetterSourceQueuesRequest) throws AwsServiceException, + SdkClientException { + + return amazonSqsToBeExtended.listDeadLetterSourceQueues(listDeadLetterSourceQueuesRequest); + } + + /** + *
+ * Deletes the queue specified by the QueueUrl
, regardless of the queue's contents.
+ *
+ * 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 60 seconds the queue and the message you sent no longer exist.
+ *
+ * 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 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 action on 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
.
+ *
+ * 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:
+ *
+ * &AttributeName.1=first
+ *
+ * &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 DeleteMessageBatchResponse deleteMessageBatch(DeleteMessageBatchRequest deleteMessageBatchRequest)
+ throws AwsServiceException, SdkClientException {
+
+ return amazonSqsToBeExtended.deleteMessageBatch(deleteMessageBatchRequest);
+ }
+
+ /**
+ * + * 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. + *
+ *+ * 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:
+ *
+ * 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 don't 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:
+ *
+ * &AttributeName.1=first
+ *
+ * &AttributeName.2=second
+ *
+ * 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 sharing access + * to the queue. + *
+ *+ * 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. + *
+ *
+ * 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.
+ *
+ * An Amazon SQS policy can have a maximum of 7 actions. + *
+ *
+ * To remove the ability to change queue permissions, you must deny permission to the AddPermission
,
+ * RemovePermission
, and SetQueueAttributes
actions in your IAM policy.
+ *
+ * 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:
+ *
+ * &AttributeName.1=first
+ *
+ * &AttributeName.2=second
+ *
+ * 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. + *
+ *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.AddPermission
+ * @see AWS API
+ * Documentation
+ */
+ public AddPermissionResponse addPermission(AddPermissionRequest addPermissionRequest)
+ throws AwsServiceException, SdkClientException, OverLimitException {
+
+ return amazonSqsToBeExtended.addPermission(addPermissionRequest);
+ }
+
+ /**
+ *
+ * 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. + *
+ *