package com.softwaremill.common.sqs; import com.amazonaws.AmazonServiceException; import com.amazonaws.ClientConfiguration; import com.amazonaws.auth.BasicAWSCredentials; import com.amazonaws.services.sqs.AmazonSQS; import com.amazonaws.services.sqs.AmazonSQSClient; import com.amazonaws.services.sqs.model.GetQueueUrlRequest; import com.amazonaws.services.sqs.model.GetQueueUrlResult; import com.amazonaws.services.sqs.model.QueueDoesNotExistException; import com.softwaremill.common.sqs.exception.SQSRuntimeException; import static com.google.common.base.Preconditions.checkNotNull; import static com.softwaremill.common.sqs.SQSConfiguration.*; /** * @author Maciej Bilas * @since 11/10/12 12:12 */ public class SQS { private final AmazonSQS sqsClient; public SQS(AmazonSQS sqsClient) { this.sqsClient = sqsClient; } public SQS() { AmazonSQSClient sqsClient = new AmazonSQSClient(new BasicAWSCredentials(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY), new ClientConfiguration().withProtocol(Util.determineProtocol(SQS_SERVER))); sqsClient.setEndpoint(SQS_SERVER); this.sqsClient = sqsClient; } public SQS(String server, String accessKey, String secretKey) { AmazonSQSClient sqsClient = new AmazonSQSClient(new BasicAWSCredentials(accessKey, secretKey), new ClientConfiguration().withProtocol(Util.determineProtocol(server))); sqsClient.setEndpoint(server); this.sqsClient = sqsClient; } public Queue getQueueByName(String queueName) { checkNotNull(queueName); try { GetQueueUrlResult url = sqsClient.getQueueUrl(new GetQueueUrlRequest(queueName)); return new Queue(queueName, url.getQueueUrl(), sqsClient); } catch (QueueDoesNotExistException e) { throw new SQSRuntimeException(String.format("Queue \"%s\" does not exist.", queueName), e); } catch (AmazonServiceException e) { throw new SQSRuntimeException("AWS exception.", e); } } }