Exemplo n.º 1
0
        /// <summary>
        /// Create response queue/blob container for the specified session.
        /// </summary>
        private void CreateResponseStorage()
        {
            this.CreateStorageClient(RetryPolicyForResponseStorage);

            if (this.responseQueue == null)
            {
                BrokerTracing.TraceVerbose(
                    "[ResponseQueueManager].CreateResponseStorage: Try to create the response queue {0}",
                    this.responseStorageName);

                CloudQueue queue = this.queueClient.GetQueueReference(this.responseStorageName);

                AzureQueueManager.CreateQueueWithRetry(queue);

                if (Interlocked.CompareExchange <CloudQueue>(ref this.responseQueue, queue, null) == null)
                {
                    BrokerTracing.EtwTrace.LogQueueCreatedOrExist(this.sessionId, this.responseStorageName);
                }
            }

            if (this.responseContainer == null)
            {
                BrokerTracing.TraceVerbose(
                    "[ResponseQueueManager].CreateResponseStorage: Try to create the response container {0}",
                    this.responseStorageName);

                CloudBlobContainer container = this.blobClient.GetContainerReference(this.responseStorageName);

                AzureQueueManager.CreateContainerWithRetry(container);

                Interlocked.CompareExchange <CloudBlobContainer>(ref this.responseContainer, container, null);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Create request queue for specified Azure service.
        /// </summary>
        /// <param name="azureServiceName">azure service name</param>
        public void CreateRequestStorage(string azureServiceName)
        {
            this.requestStorage.GetOrAdd(
                azureServiceName,
                (key) =>
            {
                string requestStorageName = SoaHelper.GetRequestStorageName(this.clusterId.ToString(), key);

                BrokerTracing.TraceVerbose(
                    "[AzureQueueManager].CreateRequestStorage: Try to create the request storage {0} for Azure service {1}",
                    requestStorageName,
                    key);

                this.CreateStorageClient(RetryPolicyForRequestStorage);

                CloudQueue queue = this.queueClient.GetQueueReference(requestStorageName);

                AzureQueueManager.CreateQueueWithRetry(queue);

                CloudBlobContainer container = this.blobClient.GetContainerReference(requestStorageName);

                AzureQueueManager.CreateContainerWithRetry(container);

                if (Interlocked.CompareExchange(ref this.requestQueueExist, 1, 0) == 0)
                {
                    BrokerTracing.EtwTrace.LogQueueCreatedOrExist(this.sessionId, requestStorageName);
                }

                return(new Tuple <CloudQueue, CloudBlobContainer>(queue, container));
            });
        }