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(); }
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(); }