Example usage for com.amazonaws.services.sqs.model GetQueueAttributesRequest GetQueueAttributesRequest

List of usage examples for com.amazonaws.services.sqs.model GetQueueAttributesRequest GetQueueAttributesRequest

Introduction

In this page you can find the example usage for com.amazonaws.services.sqs.model GetQueueAttributesRequest GetQueueAttributesRequest.

Prototype

public GetQueueAttributesRequest() 

Source Link

Document

Default constructor for GetQueueAttributesRequest object.

Usage

From source file:SimpleQueueService.java

License:Open Source License

public static int getNumberOFTasksRunning() {
    // returns the number of amazon tasks running
    AmazonSQSClient sqs = new AmazonSQSClient(new ClasspathPropertiesFileCredentialsProvider());
    CreateQueueRequest createQueueRequest = new CreateQueueRequest("taskQueue");
    String myQueueUrl = sqs.createQueue(createQueueRequest).getQueueUrl();

    GetQueueAttributesRequest request = new GetQueueAttributesRequest();
    request = request.withAttributeNames("ApproximateNumberOfMessages");

    request = request.withQueueUrl(myQueueUrl);

    Map<String, String> attrs = sqs.getQueueAttributes(request).getAttributes();

    // get the approximate number of messages in the queue
    int sizeOfMessages = Integer.parseInt(attrs.get("ApproximateNumberOfMessages"));

    System.out.println("sizeOfMessages " + sizeOfMessages);

    return sizeOfMessages;
}

From source file:awslabs.lab31.SolutionCode.java

License:Open Source License

@Override
public String getQueueArn(AmazonSQSClient sqsClient, String queueUrl) {
    // TODO: Construct a GetQueueAttributesRequest for the specified queue and for the attribute named "QueueArn".
    GetQueueAttributesRequest getQueueAttributesRequest = new GetQueueAttributesRequest().withQueueUrl(queueUrl)
            .withAttributeNames("QueueArn");

    // TODO: Submit the request using the getQueueAttributes method of the sqsClient object.
    GetQueueAttributesResult getQueueAttributesResult = sqsClient.getQueueAttributes(getQueueAttributesRequest);

    // TODO: Return the QueueArn attribute value.
    return getQueueAttributesResult.getAttributes().get("QueueArn");
}

From source file:awslabs.lab31.StudentCode.java

License:Open Source License

/**
 * Query the SQS service for the ARN of the specified queue and return it. Hint: Use the getQueueAttributes() method
 * of the client object. The attribute to request is named QueueArn.
 * /*from  ww  w.  ja va  2s . c o m*/
 * @param sqsClient The SQS Client object.
 * @param queueUrl The URL for the queue to inspect.
 * @return A string containing the ARN for the queue.
 */
@Override
public String getQueueArn(AmazonSQSClient sqsClient, String queueUrl) {
    GetQueueAttributesRequest request = new GetQueueAttributesRequest().withAttributeNames("QueueArn")
            .withQueueUrl(queueUrl);
    GetQueueAttributesResult result = sqsClient.getQueueAttributes(request);

    return result.getAttributes().get("QueueArn");
}

From source file:com.connexience.server.model.archive.glacier.SetupUtils.java

License:Open Source License

public static SQSInfo setupSQS(String accessKey, String secretKey, String domainName, String vaultName) {
    SQSInfo sqsInfo = null;/* w w w.  ja  v a 2 s. co m*/
    try {
        AWSCredentials awsCredentials = new BasicAWSCredentials(accessKey, secretKey);

        AmazonSQSClient amazonSQSClient = new AmazonSQSClient(awsCredentials);
        amazonSQSClient.setEndpoint("https://sqs." + domainName + ".amazonaws.com/");

        String queueName = vaultName + "-inkspot_glacier-queue";
        CreateQueueRequest createQueueRequest = new CreateQueueRequest();
        createQueueRequest.withQueueName(queueName);

        CreateQueueResult createQueueResult = amazonSQSClient.createQueue(createQueueRequest);
        if (createQueueResult != null) {
            String queueURL = createQueueResult.getQueueUrl();

            GetQueueAttributesRequest getQueueAttributesRequest = new GetQueueAttributesRequest();
            getQueueAttributesRequest.withQueueUrl(queueURL);
            getQueueAttributesRequest.withAttributeNames("QueueArn");

            GetQueueAttributesResult getQueueAttributesResult = amazonSQSClient
                    .getQueueAttributes(getQueueAttributesRequest);

            if (getQueueAttributesResult != null) {
                String queueARN = getQueueAttributesResult.getAttributes().get("QueueArn");

                Statement sqsStatement = new Statement(Effect.Allow);
                sqsStatement.withPrincipals(Principal.AllUsers);
                sqsStatement.withActions(SQSActions.SendMessage);
                sqsStatement.withResources(new Resource(queueARN));

                Policy sqsPolicy = new Policy();
                sqsPolicy.withStatements(sqsStatement);

                Map<String, String> sqsAttributes = new HashMap<>();
                sqsAttributes.put("Policy", sqsPolicy.toJson());

                SetQueueAttributesRequest setQueueAttributesRequest = new SetQueueAttributesRequest();
                setQueueAttributesRequest.withQueueUrl(queueURL);
                setQueueAttributesRequest.withAttributes(sqsAttributes);

                amazonSQSClient.setQueueAttributes(setQueueAttributesRequest);

                sqsInfo = new SQSInfo(queueARN, queueURL);
            } else
                logger.warn("Unable to get queue attributes: \"" + queueName + "\"");
        } else
            logger.warn("Unable to create queue: \"" + queueName + "\"");

        amazonSQSClient.shutdown();
    } catch (AmazonServiceException amazonServiceException) {
        logger.warn("AmazonServiceException: " + amazonServiceException);
        logger.debug(amazonServiceException);
    } catch (IllegalArgumentException illegalArgumentException) {
        logger.warn("IllegalArgumentException: " + illegalArgumentException);
        logger.debug(illegalArgumentException);
    } catch (AmazonClientException amazonClientException) {
        logger.warn("AmazonClientException: " + amazonClientException);
        logger.debug(amazonClientException);
    } catch (Throwable throwable) {
        logger.warn("Throwable: " + throwable);
        logger.debug(throwable);
    }

    return sqsInfo;
}

From source file:com.leverno.ysbos.archive.example.AmazonGlacierDownloadInventoryWithSQSPolling.java

License:Open Source License

private static void setupSQS() {
    CreateQueueRequest request = new CreateQueueRequest().withQueueName(sqsQueueName);
    CreateQueueResult result = sqsClient.createQueue(request);
    sqsQueueURL = result.getQueueUrl();//w  ww  .j ava  2s . com

    GetQueueAttributesRequest qRequest = new GetQueueAttributesRequest().withQueueUrl(sqsQueueURL)
            .withAttributeNames("QueueArn");

    GetQueueAttributesResult qResult = sqsClient.getQueueAttributes(qRequest);
    sqsQueueARN = qResult.getAttributes().get("QueueArn");

    Policy sqsPolicy = new Policy()
            .withStatements(new Statement(Effect.Allow).withPrincipals(Principal.AllUsers)
                    .withActions(SQSActions.SendMessage).withResources(new Resource(sqsQueueARN)));
    Map<String, String> queueAttributes = new HashMap<String, String>();
    queueAttributes.put("Policy", sqsPolicy.toJson());
    sqsClient.setQueueAttributes(new SetQueueAttributesRequest(sqsQueueURL, queueAttributes));

}

From source file:org.apache.usergrid.apm.service.ApplicationServiceImpl.java

License:Apache License

/**
 * //  w  w w  . j a va2  s .c  o m
 * @param applicationId
 */
public void createSQSQueue(String orgAppName) {
    log.info("Creating Queue for App : " + orgAppName);
    CreateQueueRequest createQueueRequest = new CreateQueueRequest();
    createQueueRequest.setQueueName(AWSUtil.formQueueName(orgAppName));

    try {
        sqsClient.createQueue(createQueueRequest);

        //Need to do this to get QueueArn to apply right policy on that

        GetQueueAttributesRequest attributesRequest = new GetQueueAttributesRequest()
                .withQueueUrl(AWSUtil.formFullQueueUrl(orgAppName)).withAttributeNames("QueueArn");

        GetQueueAttributesResult attributesResult = sqsClient.getQueueAttributes(attributesRequest);
        String queueArn = attributesResult.getAttributes().get("QueueArn");

        SetQueueAttributesRequest setQueueAttributesRequest = new SetQueueAttributesRequest();
        Map<String, String> queueAttributes = new HashMap<String, String>();
        //Increasing the max size of SQS messages.
        queueAttributes.put("MaximumMessageSize", "65536");
        //Apply IP address white list
        String sqsPolicy = AWSUtil.getSQSIPAddressWhiteListPolicy(queueArn);
        log.info("For  queue " + queueArn + " with policy  json " + sqsPolicy);
        queueAttributes.put("Policy", sqsPolicy);
        setQueueAttributesRequest.setAttributes(queueAttributes);
        setQueueAttributesRequest.setQueueUrl(AWSUtil.formFullQueueUrl(orgAppName));
        sqsClient.setQueueAttributes(setQueueAttributesRequest);

    } catch (AmazonServiceException ase) {
        log.error("Problem creating queue in sqs");
        log.error(ase);
    } catch (AmazonClientException ace) {
        log.error(ace);
    }
}

From source file:org.apache.usergrid.apm.service.ApplicationServiceImpl.java

License:Apache License

public AccessKey createAuthorizedAppPrinciple(Long applicationId, String orgAppName) {
    CreateUserRequest createUserRequest = new CreateUserRequest();

    createUserRequest.setUserName(APP_PRINCIPLE_USER_PREFIX + "_" + orgAppName);

    createUserRequest.setRequestCredentials(awsCredentials);

    try {/* w  ww . ja  va 2s .c  o  m*/
        CreateUserResult createUserResult = identityManagementClient.createUser(createUserRequest);
        log.info("cloud user id for app with " + orgAppName + " created with "
                + createUserResult.getUser().getUserName());
        CreateAccessKeyRequest accessKeyRequest = new CreateAccessKeyRequest();

        accessKeyRequest.setUserName(createUserResult.getUser().getUserName());

        CreateAccessKeyResult accessKeyResult = identityManagementClient.createAccessKey(accessKeyRequest);

        //Create policy of queue

        GetQueueAttributesRequest attributesRequest = new GetQueueAttributesRequest();

        log.info("Going to secure sqs queue : " + AWSUtil.formFullQueueUrl(orgAppName));

        attributesRequest.setQueueUrl(AWSUtil.formFullQueueUrl(orgAppName));

        List<String> attributeNames = new ArrayList<String>();
        attributeNames.add("QueueArn");
        attributesRequest.setAttributeNames(attributeNames);

        GetQueueAttributesResult attributesResult = sqsClient.getQueueAttributes(attributesRequest);

        String queueArn = attributesResult.getAttributes().get("QueueArn");

        String policy = POLICY_DOCUMENT_TEMPLATE.replace("QUEUE_ARN", queueArn);

        String formattedPolicy = String.format(POLICY_DOCUMENT_TEMPLATE, queueArn);
        log.info("Applying authorization for following AWS resources" + formattedPolicy);

        PutUserPolicyRequest policyRequest = new PutUserPolicyRequest();

        policyRequest.setPolicyName(POLICY_NAME);

        policyRequest.setPolicyDocument(formattedPolicy);

        policyRequest.setUserName(createUserResult.getUser().getUserName());

        identityManagementClient.putUserPolicy(policyRequest);
        log.info("User policy for queue " + queueArn + " was set");

        return accessKeyResult.getAccessKey();
    } catch (EntityAlreadyExistsException e) {

        log.error("This should not happen in production. Swallowing the error fow now " + e.getMessage());
        log.error(e);
        return null;
    }
}

From source file:org.apache.usergrid.apm.service.MetricsInjestionServiceSQSImpl.java

License:Apache License

protected List<ReceiveMessageResult> getClientDataForApp(String fullAppName) {

    ArrayList<ReceiveMessageResult> messageResults = new ArrayList<ReceiveMessageResult>(
            MAX_NUMBER_OF_REQUEST_TO_PROCESS);

    try {//  www  .  j  a v  a2 s . c om
        GetQueueAttributesRequest queueAttributesRequest = new GetQueueAttributesRequest();

        ArrayList<String> attributeNames = new ArrayList<String>(2);

        attributeNames.add("ApproximateNumberOfMessages");
        attributeNames.add("LastModifiedTimestamp");
        //attributeNames.add("All");

        queueAttributesRequest.setAttributeNames(attributeNames);
        String qUrl = AWSUtil.formFullQueueUrl(fullAppName);
        log.info("Getting APM data from SQS queue" + qUrl);
        queueAttributesRequest.setQueueUrl(qUrl);

        GetQueueAttributesResult queueAttributeResult = sqsClient.getQueueAttributes(queueAttributesRequest);

        String numMessagesString = queueAttributeResult.getAttributes().get("ApproximateNumberOfMessages");

        //Calculate number of "ReceiveMessage" requests need to be made.
        //TODO might need to use AsyncClient in the future to make multiple requests

        int numMessages = Integer.parseInt(numMessagesString);

        log.info("Num Messages to Process " + numMessages + " messages");

        if (numMessages > 0) {
            int receiveMessages = 0;
            int receiveRequest = 0;
            int lastNumberOfRecievedMessages = 1;

            while ((receiveMessages < numMessages) && (receiveRequest < MAX_NUMBER_OF_REQUEST_TO_PROCESS)
                    && (lastNumberOfRecievedMessages != 0)) {
                ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest();
                receiveMessageRequest.setMaxNumberOfMessages(MAX_NUMBER_OF_MESSAGES);
                receiveMessageRequest.setQueueUrl(qUrl);

                ArrayList<String> requestMessageAttributeNames = new ArrayList<String>(1);
                requestMessageAttributeNames.add("All");

                receiveMessageRequest.setAttributeNames(requestMessageAttributeNames);

                try {
                    ReceiveMessageResult receiveMessageResult = sqsClient.receiveMessage(receiveMessageRequest);
                    log.info("For application " + fullAppName + " Received "
                            + receiveMessageResult.getMessages().size() + " messages.");
                    receiveMessages += receiveMessageResult.getMessages().size();
                    //check if any of these messages have been downloaded already. Since SQS is distributed and injestor
                    //could have failed before deleting particular message, we check for message read count to 3. In odd
                    //case, some messages could get processed at most 3 times.
                    List<Message> messages = receiveMessageResult.getMessages();
                    String receiveCount = null;
                    Message m = null;
                    for (Iterator<Message> iter = messages.iterator(); iter.hasNext();) {
                        m = iter.next();
                        receiveCount = m.getAttributes().get("ApproximateReceiveCount");
                        if (receiveCount != null && Integer.valueOf(receiveCount) > 3) {
                            log.warn("ReceiveCount of message for app " + fullAppName
                                    + " is greater than 3 so going to delete this message before further processing");
                            sqsClient.deleteMessage(new DeleteMessageRequest(qUrl, m.getReceiptHandle()));
                            iter.remove();
                        }
                    }

                    lastNumberOfRecievedMessages = receiveMessageResult.getMessages().size();
                    if (lastNumberOfRecievedMessages > 0) {
                        messageResults.add(receiveMessageResult);
                        receiveRequest++;
                    }
                    ;
                } catch (Exception ex) {
                    log.error("Problem getting messages for " + fullAppName, ex);
                }
            }
        }
    } catch (AmazonServiceException ce) {
        log.error("Problem pulling message from SQS for " + fullAppName, ce);
    } catch (Exception e) {
        log.error("Problem getting messages for " + fullAppName, e);
    }

    return messageResults;
}

From source file:org.duracloud.common.queue.aws.SQSTaskQueue.java

License:Apache License

private GetQueueAttributesResult queryQueueAttributes(QueueAttributeName... attrNames) {
    return sqsClient.getQueueAttributes(
            new GetQueueAttributesRequest().withQueueUrl(queueUrl).withAttributeNames(attrNames));
}

From source file:org.transitime.maintenance.AwsGlacierInventoryRetriever.java

License:Open Source License

/**
 * For retrieving vault inventory. For initializing SQS for determining when
 * job completed. Does nothing if member snsTopicName is null. Sets members
 * sqsQueueURL, sqsQueueARN, and sqsClient.
 *//*w w  w .j a  v a2  s  .  c o m*/
private void setupSQS() {
    // If no sqsQueueName setup then simply return
    if (sqsQueueName == null)
        return;

    CreateQueueRequest request = new CreateQueueRequest().withQueueName(sqsQueueName);
    CreateQueueResult result = sqsClient.createQueue(request);
    sqsQueueURL = result.getQueueUrl();

    GetQueueAttributesRequest qRequest = new GetQueueAttributesRequest().withQueueUrl(sqsQueueURL)
            .withAttributeNames("QueueArn");

    GetQueueAttributesResult qResult = sqsClient.getQueueAttributes(qRequest);
    sqsQueueARN = qResult.getAttributes().get("QueueArn");

    Policy sqsPolicy = new Policy()
            .withStatements(new Statement(Effect.Allow).withPrincipals(Principal.AllUsers)
                    .withActions(SQSActions.SendMessage).withResources(new Resource(sqsQueueARN)));
    Map<String, String> queueAttributes = new HashMap<String, String>();
    queueAttributes.put("Policy", sqsPolicy.toJson());
    sqsClient.setQueueAttributes(new SetQueueAttributesRequest(sqsQueueURL, queueAttributes));
}