Package org.duracloud.common.queue.aws
Class SQSTaskQueue
- java.lang.Object
-
- org.duracloud.common.queue.aws.SQSTaskQueue
-
- All Implemented Interfaces:
TaskQueue
public class SQSTaskQueue extends Object implements TaskQueue
SQSTaskQueue acts as the interface for interacting with an Amazon Simple Queue Service (SQS) queue. This class provides a way to interact with a remote SQS Queue, it emulates the functionality of a queue.- Author:
- Erik Paulsson Date: 10/21/13
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
SQSTaskQueue.MsgProp
-
Constructor Summary
Constructors Constructor Description SQSTaskQueue(com.amazonaws.services.sqs.AmazonSQS sqsClient, String queueName)
SQSTaskQueue(String queueName)
Creates a SQSTaskQueue that serves as a handle to interacting with a remote Amazon SQS Queue.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
deleteTask(Task task)
Deletes a task from the queue.void
deleteTasks(Set<Task> tasks)
Deletes a set of tasksvoid
extendVisibilityTimeout(Task task)
Responsible for robustly extending the visibility timeout of a Task.String
getName()
A name identifying the queue used for logging and analysis purposes.protected Task
marshallTask(com.amazonaws.services.sqs.model.Message msg)
void
put(Set<Task> tasks)
Puts multiple tasks on the queue using batch puts.void
put(Task task)
puts a task on the queuevoid
put(Task... tasks)
Convenience method that calls put(Set) void
requeue(Task task)
Requeues the task by deleting the task, incrementing the "attempts" counter, and re-adding back to the queue.Integer
size()
Integer
sizeIncludingInvisibleAndDelayed()
Task
take()
Blocks until a task is availableSet<Task>
take(int maxTasks)
Take a max of specified number of tasks.protected String
unmarshallTask(Task task)
-
-
-
Constructor Detail
-
SQSTaskQueue
public SQSTaskQueue(String queueName)
Creates a SQSTaskQueue that serves as a handle to interacting with a remote Amazon SQS Queue. The AmazonSQSClient will search for Amazon credentials on the system as described here: http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/auth/DefaultAWSCredentialsProviderChain.html Moreover, it is possible to set the region to use via the AWS_REGION environment variable or one of the other methods described here: http://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/java-dg-region-selection.html
-
SQSTaskQueue
public SQSTaskQueue(com.amazonaws.services.sqs.AmazonSQS sqsClient, String queueName)
-
-
Method Detail
-
getName
public String getName()
Description copied from interface:TaskQueue
A name identifying the queue used for logging and analysis purposes.
-
marshallTask
protected Task marshallTask(com.amazonaws.services.sqs.model.Message msg)
-
put
public void put(Task task)
Description copied from interface:TaskQueue
puts a task on the queue
-
put
public void put(Task... tasks)
Convenience method that calls put(Set)
-
put
public void put(Set<Task> tasks)
Puts multiple tasks on the queue using batch puts. The tasks argument can contain more than 10 Tasks, in that case there will be multiple SQS batch send requests made each containing up to 10 messages.
-
take
public Set<Task> take(int maxTasks) throws TimeoutException
Description copied from interface:TaskQueue
Take a max of specified number of tasks. Blocks until at least one task is available.- Specified by:
take
in interfaceTaskQueue
- Parameters:
maxTasks
- to take from queue. Must be between 1 and 10 inclusive.- Returns:
- Throws:
TimeoutException
-
take
public Task take() throws TimeoutException
Description copied from interface:TaskQueue
Blocks until a task is available- Specified by:
take
in interfaceTaskQueue
- Returns:
- Throws:
TimeoutException
-
extendVisibilityTimeout
public void extendVisibilityTimeout(Task task) throws TaskNotFoundException
Description copied from interface:TaskQueue
Responsible for robustly extending the visibility timeout of a Task.- Specified by:
extendVisibilityTimeout
in interfaceTaskQueue
- Throws:
TaskNotFoundException
-
deleteTask
public void deleteTask(Task task) throws TaskNotFoundException
Description copied from interface:TaskQueue
Deletes a task from the queue.- Specified by:
deleteTask
in interfaceTaskQueue
- Throws:
TaskNotFoundException
-
deleteTasks
public void deleteTasks(Set<Task> tasks) throws TaskException
Description copied from interface:TaskQueue
Deletes a set of tasks- Specified by:
deleteTasks
in interfaceTaskQueue
- Throws:
TaskException
-
requeue
public void requeue(Task task)
Description copied from interface:TaskQueue
Requeues the task by deleting the task, incrementing the "attempts" counter, and re-adding back to the queue. Any subsequent calls on the requeued task via the task queue should fail due to the task not being found.
-
size
public Integer size()
-
sizeIncludingInvisibleAndDelayed
public Integer sizeIncludingInvisibleAndDelayed()
- Specified by:
sizeIncludingInvisibleAndDelayed
in interfaceTaskQueue
- Returns:
- The approximate number of elements in this queue including all items that are visible (available for takes), invisible (in process - not yet completed), and delayed (pending addition to the queue).
-
-