示例#1
0
        public SimpleMessageListener()
        {
            IAWSOrchestratorContext awsCtx = Turbine.Orchestrator.AWS.AppUtility.GetContext();

            topicArn = awsCtx.RequestTopicArn;

            notification = Amazon.AWSClientFactory
                           .CreateAmazonSNSClient(awsCtx.AccessKey, awsCtx.SecretKey,
                                                  new AmazonSimpleNotificationServiceConfig().WithServiceURL(awsCtx.SNSServiceURL));
            queue = Amazon.AWSClientFactory
                    .CreateAmazonSQSClient(
                awsCtx.AccessKey, awsCtx.SecretKey,
                new Amazon.SQS.AmazonSQSConfig().WithServiceURL(awsCtx.SQSServiceURL));

            requestQueue = awsCtx.RequestQueue;// REQUIRED
            submitQueue  = awsCtx.SubmitQueue;
            queueId      = Guid.NewGuid();
        }
示例#2
0
        public void Setup()
        {
            if (requestQueueUrl != null)
            {
                Debug.WriteLine("no setup: RequestQueueUrl : " + requestQueueUrl);
                return;
            }
            IAWSOrchestratorContext awsCtx = Turbine.Orchestrator.AWS.AppUtility.GetContext();

            if (awsCtx.RequestQueue == null)
            {
                requestQueue = String.Format("orchestrator_request_queue_{0}", queueId);
                // create one & attach to topic
                requestQueueUrl = CreateQueueTopicPolicy(requestQueue);
                if (requestQueueUrl == null)
                {
                    throw new Exception(String.Format("Failed to Create RequestQueue {0}", requestQueue));
                }
            }
            else
            {
                var rsp = queue.GetQueueUrl(new Amazon.SQS.Model.GetQueueUrlRequest().WithQueueName(requestQueue));
                if (rsp.IsSetGetQueueUrlResult())
                {
                    if (rsp.GetQueueUrlResult.IsSetQueueUrl())
                    {
                        requestQueueUrl = rsp.GetQueueUrlResult.QueueUrl;
                    }
                }
                if (requestQueueUrl == null)
                {
                    throw new Exception(String.Format("Failed to Get RequestQueue {0}", requestQueue));
                }
            }

            if (awsCtx.SubmitQueue == null)
            {
                // Create Queue, Allow Consumers to pop messages
                submitQueue    = "orchestrator_submit_queue_" + queueId;
                submitQueueUrl = CreateSubmitQueue(submitQueue);
                if (submitQueueUrl == null)
                {
                    throw new Exception(String.Format("Failed to Create submitQueue {0}", submitQueue));
                }
            }
            else
            {
                var rsp = queue.GetQueueUrl(new Amazon.SQS.Model.GetQueueUrlRequest().WithQueueName(submitQueue));
                if (rsp.IsSetGetQueueUrlResult())
                {
                    if (rsp.GetQueueUrlResult.IsSetQueueUrl())
                    {
                        submitQueueUrl = rsp.GetQueueUrlResult.QueueUrl;
                    }
                }
                if (submitQueueUrl == null)
                {
                    throw new Exception(String.Format("Failed to Get submitQueue {0}", submitQueue));
                }
            }

            var queueAttributesResponse = queue.GetQueueAttributes(
                new Amazon.SQS.Model.GetQueueAttributesRequest()
                .WithQueueUrl(requestQueueUrl)
                .WithAttributeName(new string[] { "QueueArn" }));

            if (!queueAttributesResponse.IsSetGetQueueAttributesResult())
            {
                throw new Exception(String.Format("Failed to Get RequestQueue Arn {0}", requestQueue));
            }

            if (!queueAttributesResponse.GetQueueAttributesResult.IsSetAttribute())
            {
                throw new Exception(String.Format("Failed RequestQueue {0} QueueArn attribute is not set", requestQueue));
            }

            var subResponse = notification.Subscribe(new Amazon.SimpleNotificationService.Model.SubscribeRequest()
                                                     .WithTopicArn(topicArn)
                                                     .WithProtocol("SQS")
                                                     .WithEndpoint(queueAttributesResponse.GetQueueAttributesResult.QueueARN));

            if (!subResponse.IsSetSubscribeResult())
            {
                throw new Exception(String.Format("Failed RequestQueue {0} QueueArn attribute is not set", requestQueue));
            }
            if (!subResponse.SubscribeResult.IsSetSubscriptionArn())
            {
                throw new Exception(String.Format("Failed RequestQueue {0} QueueArn attribute is not set", requestQueue));
            }

            subscriptionArn = subResponse.SubscribeResult.SubscriptionArn;
        }
 public void resetQueue()
 {
     IAWSOrchestratorContext ctx = AppUtility.GetContext();
 }