项目:dropwizard-sqs-bundle
文件:SqsBundle.java
/**
* Retrieves queue url for the given queue name. If the queue does not exist,tries to create it.
*
* @param queueName the queue name to get url for
* @return an optional String representing the queue url
*/
Optional<String> getUrlForQueue(String queueName) {
Optional<String> queueUrl = Optional.empty();
try {
GetQueueUrlResult queueUrlResult = sqs.getQueueUrl(queueName);
if (queueUrlResult.getQueueUrl() != null) {
queueUrl = Optional.of(queueUrlResult.getQueueUrl());
}
} catch (QueueDoesNotExistException e) {
if (LOGGER.isInfoEnabled()) {
LOGGER.info("Queue " + queueName + " does not exist,try to create it",e);
}
CreateQueueRequest createQueueRequest = new CreateQueueRequest(queueName);
try {
queueUrl = Optional.of(sqs.createQueue(createQueueRequest).getQueueUrl());
} catch (AmazonClientException e2) {
LOGGER.error("Could not create queue " + queueName + ",bundle won't work",e2);
}
}
return queueUrl;
}
项目:dropwizard-sqs-bundle
文件:SqsBundleTest.java
@Test
public void shouldCreateNewQueueWhenNoQueueUrlIsFound() throws Exception {
//GIVEN
AmazonSQS sqs = mock(AmazonSQS.class);
field("sqs").ofType(AmazonSQS.class).in(bundle).set(sqs);
String queueUrl = "https://eu-central-1/queue.amazonaws.com/123456/test-queue";
when(sqs.getQueueUrl("test-queue")).thenThrow(new QueueDoesNotExistException("Simulates that queue does not exist"));
when(sqs.createQueue(new CreateQueueRequest("test-queue"))).thenReturn(new CreateQueueResult().withQueueUrl(queueUrl));
//WHEN
Optional<String> urlForQueue = bundle.getUrlForQueue("test-queue");
//THEN
assertThat(urlForQueue.isPresent()).isTrue();
assertThat(urlForQueue.get()).isEqualTo(queueUrl);
}
项目:sqs-retryqueue
文件:SQSRetryQueue.java
private void initQueue() {
this.sqs = new AmazonSQSClient(); // Do we need to use new
// ClientConfiguration().withMaxConnections(256)
// ?
this.sqs.configureRegion(region);
try {
// Check to see if queue exists
GetQueueUrlResult queueUrlResult = this.sqs.getQueueUrl(getSqsQueueName());
this.queueUrl = queueUrlResult.getQueueUrl();
} catch (QueueDoesNotExistException queueDoesNotExist) {
// Queue does not exist,need to create one
CreateQueueRequest createQueueRequest = new CreateQueueRequest();
createQueueRequest.setQueueName(getSqsQueueName());
createQueueRequest.addAttributesEntry("VisibilityTimeout","" + getVisibilityTimeout());
CreateQueueResult createQueueResult = this.sqs.createQueue(createQueueRequest);
this.queueUrl = createQueueResult.getQueueUrl();
}
}
项目:micro-genie
文件:SqsQueueAdmin.java
/**
* Get a queue url from a queue name
* @param queueName
* @return queueUrl - For the specified queue name
*/
private synchronized String getAndSetQueueUrl(final String queueName) throws QueueDoesNotExistException{
try{
final String url = queueUrlMap.get(queueName);
if(url != null){
return url;
}else{
final GetQueueUrlResult result = this.sqs.getQueueUrl(queueName);
if(result != null && !Strings.isNullOrEmpty(result.getQueueUrl())){
queueUrlMap.put(queueName,result.getQueueUrl());
return result.getQueueUrl();
}
}
}catch(QueueDoesNotExistException qne){
throw qne;
}catch(Exception ex){
throw new RuntimeException(ex.getMessage(),ex);
}
return null;
}
项目:micro-genie
文件:SqsFactory.java
private void createQueueAndConfigIfNotExists(final String queue,final MessageHandler handler) {
/** determine if the queue exists,if not,create it with the default settings **/
try{
final String url = this.admin.getQueueUrl(queue);
if(Strings.isNullOrEmpty(url)){
throw new QueueDoesNotExistException(String.format("The queue: %s was not found",queue));
}
}catch(QueueDoesNotExistException qneException){
/** determine if the queue configuration exists **/
SqsQueueConfig queueConfig = this.queueConfigMap.get(queue);
if(queueConfig==null){
/** create default config if we don't know about it **/
queueConfig = new SqsQueueConfig();
queueConfig.setName(queue);
this.queueConfigMap.put(queue,queueConfig);
}
LOGGER.info("Queue: {} does not exist - creating the queue now",queue);
this.admin.initializeQueue(queueConfig,this.config.isBlockUntilReady());
}
}
项目:spring-cloud-aws
文件:DynamicQueueUrlDestinationResolver.java
@Override
public String resolveDestination(String name) throws DestinationResolutionException {
String queueName = name;
if (this.resourceIdResolver != null) {
queueName = this.resourceIdResolver.resolveToPhysicalResourceId(name);
}
if (isValidQueueUrl(queueName)) {
return queueName;
}
if (this.autoCreate) {
//Auto-create is fine to be called even if the queue exists.
CreateQueueResult createQueueResult = this.amazonSqs.createQueue(new CreateQueueRequest(queueName));
return createQueueResult.getQueueUrl();
} else {
try {
GetQueueUrlResult getQueueUrlResult = this.amazonSqs.getQueueUrl(new GetQueueUrlRequest(queueName));
return getQueueUrlResult.getQueueUrl();
} catch (QueueDoesNotExistException e) {
throw new DestinationResolutionException(e.getMessage(),e);
}
}
}
项目:emodb
文件:SQSScanWorkflow.java
private String queryQueueUrl(String queueName) {
try {
return _sqs.getQueueUrl(new GetQueueUrlRequest(queueName)).getQueueUrl();
} catch (QueueDoesNotExistException e) {
// Create the queue
int visibilityTimeout = queueName.equals(_pendingScanRangeQueue) ?
DEFAULT_TASK_CLAIM_VISIBILITY_TIMEOUT : DEFAULT_TASK_COMPLETE_VISIBILITY_TIMEOUT;
return _sqs.createQueue(
new CreateQueueRequest(queueName)
.withAttributes(ImmutableMap.<String,String>of(
"VisibilityTimeout",String.valueOf(visibilityTimeout)))
).getQueueUrl();
}
}
项目:Camel
文件:SqsConsumer.java
@Override
protected int poll() throws Exception {
// must reset for each poll
shutdownRunningTask = null;
pendingExchanges = 0;
ReceiveMessageRequest request = new ReceiveMessageRequest(getQueueUrl());
request.setMaxNumberOfMessages(getMaxMessagesPerPoll() > 0 ? getMaxMessagesPerPoll() : null);
request.setVisibilityTimeout(getConfiguration().getVisibilityTimeout() != null ? getConfiguration().getVisibilityTimeout() : null);
request.setWaitTimeSeconds(getConfiguration().getWaitTimeSeconds() != null ? getConfiguration().getWaitTimeSeconds() : null);
if (attributeNames != null) {
request.setAttributeNames(attributeNames);
}
if (messageAttributeNames != null) {
request.setMessageAttributeNames(messageAttributeNames);
}
LOG.trace("Receiving messages with request [{}]...",request);
ReceiveMessageResult messageResult = null;
try {
messageResult = getClient().receiveMessage(request);
} catch (QueueDoesNotExistException e) {
LOG.info("Queue does not exist....recreating now...");
reConnectToQueue();
messageResult = getClient().receiveMessage(request);
}
if (LOG.isTraceEnabled()) {
LOG.trace("Received {} messages",messageResult.getMessages().size());
}
Queue<Exchange> exchanges = createExchanges(messageResult.getMessages());
return processBatch(CastUtils.cast(exchanges));
}
项目:distributed-image-classification
文件:Queue.java
private String getQueueUrl(String queueName,boolean createIfNotExist) {
try {
return _sqs.getQueueUrl(queueName).getQueueUrl();
} catch (QueueDoesNotExistException e) {
if (createIfNotExist) {
logger.info("Creating SQS queue called: " + queueName);
return createQueue(queueName);
}
throw e;
}
}
项目:distributed-image-classification
文件:Queue.java
public boolean stillExists() {
try {
_sqs.getQueueUrl(_queueName);
return true;
} catch (QueueDoesNotExistException e) {
return false;
}
}
项目:herd
文件:SqsOperationsImpl.java
@Override
public SendMessageResult sendMessage(String queueName,String messageText,Map<String,MessageAttributeValue> messageAttributes,AmazonSQS amazonSQS)
{
try
{
return amazonSQS.sendMessage(new SendMessageRequest().withQueueUrl(amazonSQS.getQueueUrl(queueName).getQueueUrl()).withMessageBody(messageText)
.withMessageAttributes(messageAttributes));
}
catch (QueueDoesNotExistException e)
{
throw new IllegalStateException(String.format("AWS SQS queue with \"%s\" name not found.",queueName),e);
}
}
项目:dropwizard-sqs-bundle
文件:SqsBundleTest.java
@Test(expected = CannotCreateSenderException.class)
public void shouldThrowExceptionWhenCreatingSenderIfQueueDoesNotExists() throws Exception,CannotCreateSenderException {
//GIVEN
AmazonSQS sqs = mock(AmazonSQS.class);
field("sqs").ofType(AmazonSQS.class).in(bundle).set(sqs);
when(sqs.getQueueUrl(anyString())).thenThrow(new QueueDoesNotExistException("Simulate queue does not exist"));
when(sqs.createQueue((CreateQueueRequest) any())).thenThrow(new AmazonClientException("Simulate queue cannot be created"));
//WHEN
bundle.createSender("test-queue");
//THEN
}
项目:widow
文件:QueueManager.java
@PostConstruct
public void postConstruct() {
// for each configured queue set up the data structure to manage the current message batch
String queuesProperty = StringUtils.trim(config.getString(QUEUE_NAMES_PROPERTY));
Validate.notEmpty(queuesProperty);
String[] queues = StringUtils.split(queuesProperty,"| ");
// Initialize the message and queue URLs
Map<String,LinkedBlockingQueue<Message>> tempMessagesMap = new HashMap<>(queues.length);
Map<String,String> tempQueueUrls = new HashMap<>(queues.length);
for (String queue : queues) {
queue = StringUtils.trim(queue);
String queueUrl;
logger.info("Initializing queue " + queue);
try {
queueUrl = sqsClient.getQueueUrl(queue).getQueueUrl();
} catch (QueueDoesNotExistException ex) {
queueUrl = sqsClient.createQueue(queue).getQueueUrl();
}
tempMessagesMap.put(queue,new LinkedBlockingQueue<>());
tempQueueUrls.put(queue,queueUrl);
}
messagesMap = Collections.unmodifiableMap(tempMessagesMap);
queueUrls = Collections.unmodifiableMap(tempQueueUrls);
// Start the async operation
executorService.submit(messagePoller);
}
项目:micro-genie
文件:SqsQueueAdmin.java
/**
* Get the queue url. First an internal cache is checked,if the name to queueUrl mapping
* is not found in the internal cache a call is made to the Sqs API. If a valid queue
* url is returned the name -> queueUrl mapping will be cached locally
* @param queueName
* @return queueUrl
*/
public String getQueueUrl(final String queueName) throws QueueDoesNotExistException{
Preconditions.checkArgument(!Strings.isNullOrEmpty(queueName),"Queue Name is required in order to submit a message for sqs");
String url = queueUrlMap.get(queueName);
if(url!=null){
return url;
}else{
return this.getAndSetQueueUrl(queueName);
}
}
项目:spring-cloud-aws
文件:DynamicQueueUrlDestinationResolverTest.java
@Test
public void testInvalidDestinationName() throws Exception {
AmazonSQS amazonSqs = mock(AmazonSQS.class);
AmazonServiceException exception = new QueueDoesNotExistException("AWS.SimpleQueueService.NonExistentQueue");
exception.setErrorCode("AWS.SimpleQueueService.NonExistentQueue");
String queueUrl = "invalidName";
when(amazonSqs.getQueueUrl(new GetQueueUrlRequest(queueUrl))).thenThrow(exception);
DynamicQueueUrlDestinationResolver dynamicQueueDestinationResolver = new DynamicQueueUrlDestinationResolver(amazonSqs);
try {
dynamicQueueDestinationResolver.resolveDestination(queueUrl);
} catch (DestinationResolutionException e) {
assertTrue(e.getMessage().startsWith("AWS.SimpleQueueService.NonExistentQueue"));
}
}
项目:amazon-sqs-java-messaging-lib
文件:AmazonSQSMessagingClientWrapperTest.java
@Test(expected = InvalidDestinationException.class)
public void testGetQueueUrlQueueNameThrowQueueDoesNotExistException() throws JMSException {
GetQueueUrlRequest getQueueUrlRequest = new GetQueueUrlRequest(QUEUE_NAME);
doThrow(new QueueDoesNotExistException("qdnee"))
.when(amazonSQSClient).getQueueUrl(eq(getQueueUrlRequest));
wrapper.getQueueUrl(QUEUE_NAME);
}
项目:amazon-sqs-java-messaging-lib
文件:AmazonSQSMessagingClientWrapperTest.java
@Test(expected = InvalidDestinationException.class)
public void testGetQueueUrlQueueNameWithAccountIdThrowQueueDoesNotExistException() throws JMSException {
GetQueueUrlRequest getQueueUrlRequest = new GetQueueUrlRequest(QUEUE_NAME);
getQueueUrlRequest.setQueueOwnerAWSAccountId(OWNER_ACCOUNT_ID);
doThrow(new QueueDoesNotExistException("qdnee"))
.when(amazonSQSClient).getQueueUrl(eq(getQueueUrlRequest));
wrapper.getQueueUrl(QUEUE_NAME,OWNER_ACCOUNT_ID);
}
项目:amazon-sqs-java-messaging-lib
文件:AmazonSQSMessagingClientWrapperTest.java
@Test
public void testQueueExistsThrowQueueDoesNotExistException() throws JMSException {
GetQueueUrlRequest getQueueUrlRequest = new GetQueueUrlRequest(QUEUE_NAME);
doThrow(new QueueDoesNotExistException("qdnee"))
.when(amazonSQSClient).getQueueUrl(eq(getQueueUrlRequest));
assertFalse(wrapper.queueExists(QUEUE_NAME));
}
项目:awslocal
文件:DirectorySQS.java
@Override
public GetQueueUrlResult getQueueUrl(GetQueueUrlRequest getQueueUrlRequest) throws AmazonClientException {
try {
File topicFile = new File(_rootDirectory,getQueueUrlRequest.getQueueName());
if (!topicFile.exists()) {
throw new QueueDoesNotExistException("could not find a file for queue named " + getQueueUrlRequest.getQueueName());
}
return new GetQueueUrlResult().withQueueUrl(saveQueue(new DirectorySQSQueue(topicFile.toPath())));
} catch (IOException e) {
throw new AmazonServiceException("could not get queue named " + getQueueUrlRequest.getQueueName(),e);
}
}
项目:awslocal
文件:TestSQSClient.java
@Test(expectedExceptions = QueueDoesNotExistException.class)
public void cannotDeleteNonExistentQueue()
throws IOException {
_amazonSQS.deleteQueue(new DeleteQueueRequest(new File(TestUtils.createTempDirectory(),someQueueName()).toURI().toString()));
}
项目:awslocal
文件:TestSQSClient.java
@Test(expectedExceptions = QueueDoesNotExistException.class)
public void failsOnNonExistentQueue() {
_amazonSQS.getQueueUrl(new GetQueueUrlRequest(someQueueName()));
}