Ejemplo n.º 1
0
        public AzureQueueStorageSink(SubscriptionMetadata metadata, ILog logger = null)
            : base(metadata, logger)
        {
            loadQueue = new ConcurrentQueue <EventMessage>();

            auditor = AuditFactory.CreateSingleton().GetAuditor(AuditType.Message);
            uri     = new Uri(metadata.NotifyAddress);
            NameValueCollection nvc = HttpUtility.ParseQueryString(uri.Query);

            queue = nvc["queue"];

            string ttlString = nvc["ttl"];

            if (!string.IsNullOrEmpty(ttlString))
            {
                ttl = TimeSpan.Parse(ttlString);
            }

            Uri.TryCreate(metadata.SymmetricKey, UriKind.Absolute, out Uri sasUri);

            if (sasUri == null)
            {
                storage = QueueStorage.New(
                    $"DefaultEndpointsProtocol=https;AccountName={uri.Authority.Split(new[] { '.' })[0]};AccountKey={metadata.SymmetricKey};",
                    10000, 1000);
            }
            else
            {
                string connectionString = $"BlobEndpoint={queue};SharedAccessSignature={metadata.SymmetricKey}";
                storage = QueueStorage.New(connectionString, 1000, 5120000);
            }
        }