Example usage for com.amazonaws.services.sqs.model CreateQueueRequest setAttributes

List of usage examples for com.amazonaws.services.sqs.model CreateQueueRequest setAttributes

Introduction

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

Prototype


public void setAttributes(java.util.Map<String, String> attributes) 

Source Link

Document

A map of attributes with their corresponding values.

Usage

From source file:com.comcast.cmb.test.tools.CMBTutorial.java

License:Apache License

public static void main(String[] args) {

    try {/*from www . ja v  a  2s.  c  om*/

        Util.initLog4jTest();

        //TODO: set user id and credentials for two distinct users

        // user "cqs_test_1"

        //BasicAWSCredentials user1Credentials = new BasicAWSCredentials("<access_key>", "<secret_key>");

        BasicAWSCredentials user1Credentials = new BasicAWSCredentials("Z2DVBFRNZ2C2SSXDWS5F",
                "bH2UQiJkpctBaE3eaDob19fj5J9Q1FVafrZantBp");

        // user "cqs_test_2"

        //String user2Id = "<user_id>";
        String user2Id = "389653920093";

        //BasicAWSCredentials user2Credentials = new BasicAWSCredentials("<access_key>", "<secret_key>");

        BasicAWSCredentials user2Credentials = new BasicAWSCredentials("QL8Q1VOBCSJC5FZ2DMIU",
                "n6a82gyJZ04Z+Xqp7OgfqPtbbKqVc3UbuOTNrF+7");

        // service urls

        //TODO: add service URLs

        //String cqsServerUrl = "http://<host>:<port>";
        //String cnsServerUrl = "http://<host>:<port>";

        String cqsServerUrl = "http://localhost:6059";
        String cnsServerUrl = "http://localhost:6061";

        // initialize service

        AmazonSQSClient sqs = new AmazonSQSClient(user1Credentials);
        sqs.setEndpoint(cqsServerUrl);

        AmazonSNSClient sns = new AmazonSNSClient(user2Credentials);
        sns.setEndpoint(cnsServerUrl);

        // create queue

        Random randomGenerator = new Random();

        String queueName = QUEUE_PREFIX + randomGenerator.nextLong();

        HashMap<String, String> attributeParams = new HashMap<String, String>();
        CreateQueueRequest createQueueRequest = new CreateQueueRequest(queueName);
        createQueueRequest.setAttributes(attributeParams);
        String queueUrl = sqs.createQueue(createQueueRequest).getQueueUrl();

        AddPermissionRequest addPermissionRequest = new AddPermissionRequest();
        addPermissionRequest.setQueueUrl(queueUrl);
        addPermissionRequest.setActions(Arrays.asList("SendMessage"));
        addPermissionRequest.setLabel(UUID.randomUUID().toString());
        addPermissionRequest.setAWSAccountIds(Arrays.asList(user2Id));
        sqs.addPermission(addPermissionRequest);

        // create topic

        String topicName = "TSTT" + randomGenerator.nextLong();

        CreateTopicRequest createTopicRequest = new CreateTopicRequest(topicName);
        CreateTopicResult createTopicResult = sns.createTopic(createTopicRequest);
        String topicArn = createTopicResult.getTopicArn();

        // subscribe and confirm cqs endpoint

        SubscribeRequest subscribeRequest = new SubscribeRequest();
        String queueArn = getArnForQueueUrl(queueUrl);
        subscribeRequest.setEndpoint(queueArn);
        subscribeRequest.setProtocol("cqs");
        subscribeRequest.setTopicArn(topicArn);
        SubscribeResult subscribeResult = sns.subscribe(subscribeRequest);
        String subscriptionArn = subscribeResult.getSubscriptionArn();

        if (subscriptionArn.equals("pending confirmation")) {

            Thread.sleep(500);

            ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest();
            receiveMessageRequest.setQueueUrl(queueUrl);
            receiveMessageRequest.setMaxNumberOfMessages(1);
            ReceiveMessageResult receiveMessageResult = sqs.receiveMessage(receiveMessageRequest);

            List<Message> messages = receiveMessageResult.getMessages();

            if (messages != null && messages.size() == 1) {

                JSONObject o = new JSONObject(messages.get(0).getBody());

                if (!o.has("SubscribeURL")) {
                    throw new Exception("message is not a confirmation messsage");
                }

                String subscriptionUrl = o.getString("SubscribeURL");
                httpGet(subscriptionUrl);

                DeleteMessageRequest deleteMessageRequest = new DeleteMessageRequest();
                deleteMessageRequest.setReceiptHandle(messages.get(0).getReceiptHandle());
                deleteMessageRequest.setQueueUrl(queueUrl);
                sqs.deleteMessage(deleteMessageRequest);

            } else {
                throw new Exception("no confirmation message found");
            }
        }

        // publish and receive message

        PublishRequest publishRequest = new PublishRequest();
        String messageText = "quamvis sint sub aqua, sub aqua maledicere temptant";
        publishRequest.setMessage(messageText);
        publishRequest.setSubject("unit test message");
        publishRequest.setTopicArn(topicArn);
        sns.publish(publishRequest);

        Thread.sleep(500);

        ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest();
        receiveMessageRequest.setQueueUrl(queueUrl);
        receiveMessageRequest.setMaxNumberOfMessages(1);
        ReceiveMessageResult receiveMessageResult = sqs.receiveMessage(receiveMessageRequest);

        List<Message> messages = receiveMessageResult.getMessages();

        if (messages != null && messages.size() == 1) {

            String messageBody = messages.get(0).getBody();

            if (!messageBody.contains(messageText)) {
                throw new Exception("message text not found");
            }

            DeleteMessageRequest deleteMessageRequest = new DeleteMessageRequest();
            deleteMessageRequest.setReceiptHandle(messages.get(0).getReceiptHandle());
            deleteMessageRequest.setQueueUrl(queueUrl);
            sqs.deleteMessage(deleteMessageRequest);

        } else {
            throw new Exception("no messages found");
        }

        // subscribe and confirm http endpoint

        String id = randomGenerator.nextLong() + "";
        String endPointUrl = CMBTestingConstants.HTTP_ENDPOINT_BASE_URL + "recv/" + id;
        String lastMessageUrl = CMBTestingConstants.HTTP_ENDPOINT_BASE_URL + "info/" + id + "?showLast=true";

        subscribeRequest = new SubscribeRequest();
        subscribeRequest.setEndpoint(endPointUrl);
        subscribeRequest.setProtocol("http");
        subscribeRequest.setTopicArn(topicArn);
        subscribeResult = sns.subscribe(subscribeRequest);
        subscriptionArn = subscribeResult.getSubscriptionArn();

        if (subscriptionArn.equals("pending confirmation")) {

            Thread.sleep(500);

            String response = httpGet(lastMessageUrl);

            JSONObject o = new JSONObject(response);

            if (!o.has("SubscribeURL")) {
                throw new Exception("message is not a confirmation messsage");
            }

            String subscriptionUrl = o.getString("SubscribeURL");

            response = httpGet(subscriptionUrl);
        }

        // publish and receive message

        publishRequest = new PublishRequest();
        publishRequest.setMessage(messageText);
        publishRequest.setSubject("unit test message");
        publishRequest.setTopicArn(topicArn);
        sns.publish(publishRequest);

        Thread.sleep(500);

        String response = httpGet(lastMessageUrl);

        if (response != null && response.length() > 0) {

            if (!response.contains(messageText)) {
                throw new Exception("message text not found");
            }

        } else {
            throw new Exception("no messages found");
        }

        // delete queue and topic

        DeleteTopicRequest deleteTopicRequest = new DeleteTopicRequest(topicArn);
        sns.deleteTopic(deleteTopicRequest);

        sqs.deleteQueue(new DeleteQueueRequest(queueUrl));

        System.out.println("OK");

    } catch (Exception ex) {
        ex.printStackTrace();
    }
}

From source file:com.comcast.cns.tools.CQSHandler.java

License:Apache License

public static synchronized void ensureQueuesExist(String queueNamePrefix, int numShards) {

    for (int i = 0; i < numShards; i++) {

        GetQueueUrlRequest getQueueUrlRequest = new GetQueueUrlRequest(queueNamePrefix + i);

        try {//from  w ww  .ja  v a 2  s. c om
            sqs.getQueueUrl(getQueueUrlRequest);
        } catch (AmazonServiceException ex) {

            if (ex.getStatusCode() == 400) {

                CreateQueueRequest createQueueRequest = new CreateQueueRequest(queueNamePrefix + i);
                Map<String, String> attributes = new HashMap<String, String>();

                if (queueNamePrefix
                        .startsWith(CMBProperties.getInstance().getCNSEndpointPublishQueueNamePrefix())) {
                    attributes.put("VisibilityTimeout",
                            CMBProperties.getInstance().getCNSEndpointPublishJobVisibilityTimeout() + "");
                } else {
                    attributes.put("VisibilityTimeout",
                            CMBProperties.getInstance().getCNSPublishJobVisibilityTimeout() + "");
                }

                createQueueRequest.setAttributes(attributes);
                CreateQueueResult createQueueResponse = sqs.createQueue(createQueueRequest);

                if (createQueueResponse.getQueueUrl() == null) {
                    throw new IllegalStateException("Could not create queue with name " + queueNamePrefix + i);
                }

                logger.info("event=created_missing_queue name=" + queueNamePrefix + i + " url="
                        + createQueueResponse.getQueueUrl());

            } else {
                throw ex;
            }
        }
    }
}

From source file:com.eucalyptus.portal.SimpleQueueClientManager.java

License:Open Source License

public void createQueue(final String queueName, final Map<String, String> queueAttributes) throws Exception {
    try {//from  w w  w .  ja  v a  2 s  . c  om
        final CreateQueueRequest req = new CreateQueueRequest();
        if (queueAttributes != null)
            req.setAttributes(queueAttributes);
        req.setQueueName(queueName);
        if (getSimpleQueueClient().createQueue(req).getQueueUrl() == null)
            throw new Exception("Null queue URL is returned");
    } catch (final AmazonServiceException ex) {
        throw new Exception("Failed to create queue due to service error", ex);
    } catch (final AmazonClientException ex) {
        throw new Exception("Failed to create queue due to client error", ex);
    }
}

From source file:org.duracloud.common.sns.SnsSubscriptionManager.java

License:Apache License

public synchronized void connect() {
    if (initialized) {
        throw new DuraCloudRuntimeException("this manager is already connected");
    }//from   w ww  .j  a v  a2s .  c om

    //create sqs queue
    log.info("creating sqs queue");
    CreateQueueRequest request = new CreateQueueRequest(this.queueName);
    Map<String, String> attributes = new HashMap<String, String>();
    attributes.put("ReceiveMessageWaitTimeSeconds", "20");
    request.setAttributes(attributes);
    CreateQueueResult result;
    try {
        result = sqsClient.createQueue(request);
        this.queueUrl = result.getQueueUrl();
        log.info("sqs queue created: {}", this.queueUrl);
    } catch (QueueNameExistsException ex) {
        log.info("queue with name {} already exists.");
        GetQueueUrlResult queueUrlResult = sqsClient.getQueueUrl(this.queueName);
        this.queueUrl = queueUrlResult.getQueueUrl();
        log.info("sqs queue url retrieved: {}", this.queueUrl);
    }

    String queueArnKey = "QueueArn";
    GetQueueAttributesResult getQueueAttrResult = sqsClient.getQueueAttributes(this.queueUrl,
            Arrays.asList(queueArnKey));
    log.info("subscribing {} to {}", queueUrl, topicArn);

    String queueArn = getQueueAttrResult.getAttributes().get(queueArnKey);

    SubscribeResult subscribeResult = this.snsClient.subscribe(topicArn, "sqs", queueArn);
    this.subscriptionArn = subscribeResult.getSubscriptionArn();

    Map<String, String> queueAttributes = new HashMap<String, String>();
    queueAttributes.put("Policy", generateSqsPolicyForTopic(queueArn, topicArn));

    sqsClient.setQueueAttributes(new SetQueueAttributesRequest(queueUrl, queueAttributes));

    log.info("subscription complete: {}", this.subscriptionArn);

    //subscribe queue to topic
    this.initialized = true;

    startPolling();

}