コード例 #1
0
		static void Main()
		{
			_servicesBusConnectionString = AmbientConnectionStringProvider.Instance.GetConnectionString(ConnectionStringNames.ServiceBus);
			namespaceManager = NamespaceManager.CreateFromConnectionString(_servicesBusConnectionString);

			if (!namespaceManager.QueueExists(nameof(Step1)))
			{
				namespaceManager.CreateQueue(nameof(Step1));
			}
			if (!namespaceManager.QueueExists(nameof(Step2)))
			{
				namespaceManager.CreateQueue(nameof(Step2));
			}

			JobHostConfiguration config = new JobHostConfiguration();
			config.UseServiceBus();



			var host = new JobHost(config);

			CreateStartMessage();

			host.RunAndBlock();
		}
コード例 #2
0
        protected internal void StartQueues(Dictionary <Type, IMessageHandlerFactory> handlerMap)
        {
            // Create queues for each registered type
            this.handlerMap = handlerMap;

            queueMap = new Dictionary <string, Type>();

            var mqSuffixes = new [] { ".inq", ".outq", ".priorityq", ".dlq" };

            foreach (var type in this.handlerMap.Keys)
            {
                foreach (var mqSuffix in mqSuffixes)
                {
                    var queueName = QueueNames.ResolveQueueNameFn(type.Name, mqSuffix);

                    if (!queueMap.ContainsKey(queueName))
                    {
                        queueMap.Add(queueName, type);
                    }
#if !NETSTANDARD2_0
                    var mqDesc = new QueueDescription(queueName);
                    if (!namespaceManager.QueueExists(queueName))
                    {
                        namespaceManager.CreateQueue(mqDesc);
                    }
#endif
                }

                var mqNames = new QueueNames(type);
                AddQueueHandler(mqNames.In);
                AddQueueHandler(mqNames.Priority);
            }
        }
コード例 #3
0
        private void InitializeStorage()
        {
            // Open storage account using credentials from .cscfg file.
            var storageAccount = CloudStorageAccount.Parse
                                     (RoleEnvironment.GetConfigurationSettingValue("StorageConnectionString"));

            //Trace.TraceInformation("Creating InputDocuments blob container");
            var blobClient         = storageAccount.CreateCloudBlobClient();
            var inputBlobContainer = blobClient.GetContainerReference("inputdocuments");

            if (inputBlobContainer.CreateIfNotExists())
            {
                inputBlobContainer.SetPermissions(
                    new BlobContainerPermissions
                {
                    PublicAccess = BlobContainerPublicAccessType.Blob
                });
            }

            var outputBlobContainer = blobClient.GetContainerReference("outputdocuments");

            if (outputBlobContainer.CreateIfNotExists())
            {
                outputBlobContainer.SetPermissions(
                    new BlobContainerPermissions
                {
                    PublicAccess = BlobContainerPublicAccessType.Blob
                });
            }

            // Thread-safe. Recommended that you cache rather than recreating it
            // on every request.
            // Obtain these values from the portal.
            var Namespace = "pratyay";

            var uri = ServiceBusEnvironment.CreateServiceUri("sb", Namespace, string.Empty);
            var tP  = TokenProvider.CreateSharedAccessSignatureTokenProvider("RootManageSharedAccessKey",
                                                                             "zT1+iZ/5mfikMpLrZXB+FbPelZ6GzqUqCBVbtVc3wtw=");

            ServiceBusEnvironment.SystemConnectivity.Mode = ConnectivityMode.Http;
            // Create the namespace manager which gives you access to
            // management operations.
            var namespaceManager = new NamespaceManager(uri, tP);

            // Create the queue if it does not exist already.

            if (!namespaceManager.QueueExists("conversionrequest"))
            {
                namespaceManager.CreateQueue("conversionrequest");
            }

            if (!namespaceManager.QueueExists("processedmessage"))
            {
                namespaceManager.CreateQueue("processedmessage");
            }
            //Trace.TraceInformation("Storage initialized");
        }
コード例 #4
0
        public void CreateInfoListener(string queueName)
        {
            if (!_namespaceManager.QueueExists(queueName))
            {
                _namespaceManager.CreateQueue(queueName);
            }
            var client = QueueClient.CreateFromConnectionString(_cnString, queueName, ReceiveMode.ReceiveAndDelete);

            client.OnMessage(message =>
            {
                ProcessMsg(message.GetBody <DownloadFileMsg>());
            });
        }
コード例 #5
0
        public ServiceBusQueue(string connectionString, string queueName = null, int retries = 2, int workItemTimeoutMilliseconds = 60 * 1000, bool shouldRecreate = false, RetryPolicy retryPolicy = null)
        {
            _queueName        = queueName ?? typeof(T).Name;
            _namespaceManager = NamespaceManager.CreateFromConnectionString(connectionString);

            if (_namespaceManager.QueueExists(_queueName) && shouldRecreate)
            {
                _namespaceManager.DeleteQueue(_queueName);
            }

            if (!_namespaceManager.QueueExists(_queueName))
            {
                _queueDescription = new QueueDescription(_queueName)
                {
                    MaxDeliveryCount = retries + 1,
                    LockDuration     = TimeSpan.FromMilliseconds(workItemTimeoutMilliseconds)
                };
                _namespaceManager.CreateQueue(_queueDescription);
            }
            else
            {
                _queueDescription = _namespaceManager.GetQueue(_queueName);
                _queueDescription.MaxDeliveryCount = retries + 1;
                _queueDescription.LockDuration     = TimeSpan.FromMilliseconds(workItemTimeoutMilliseconds);
            }

            _queueClient = QueueClient.CreateFromConnectionString(connectionString, _queueDescription.Path);
            if (retryPolicy != null)
            {
                _queueClient.RetryPolicy = retryPolicy;
            }
        }
コード例 #6
0
        public static void Main(string[] args)
        {
            ServiceNamespace = ConfigurationManager.AppSettings["ServiceNamespace"];
            // Issuer key
            sasKeyValue = ConfigurationManager.AppSettings["SASKey"];            

            // Create management credentials
            TokenProvider credentials = TokenProvider.CreateSharedAccessSignatureTokenProvider(sasKeyName, sasKeyValue);
            NamespaceManager namespaceClient = 
                new NamespaceManager(
                    ServiceBusEnvironment.CreateServiceUri("sb", ServiceNamespace, string.Empty), 
                    credentials);
            QueueDescription myQueue;
            if (!namespaceClient.QueueExists(QUEUE))
            {
                myQueue = namespaceClient.CreateQueue(QUEUE);
            }
            MessagingFactory factory = MessagingFactory.Create(ServiceBusEnvironment.CreateServiceUri("sb", ServiceNamespace, string.Empty), credentials);
            QueueClient myQueueClient = factory.CreateQueueClient(QUEUE);

            // Send message
            Poco poco = new Poco();
            poco.Id = "001";
            poco.content = "This is some content";
            BrokeredMessage message = new BrokeredMessage();
            message.Properties.Add("Id", poco.Id);
            message.Properties.Add("Content", poco.content);
            myQueueClient.Send(message);
        }
コード例 #7
0
        public void CreateQueue(
            string path,
            bool requiresDuplicateDetection = false,
            TimeSpan?duplicateDetectionHistoryTimeWindow = null,
            bool requiresSession       = false,
            int maxDeliveryCount       = 10,
            TimeSpan?defaultMessageTTL = null,
            bool enableDeadLetteringOnMessageExpiration = false
            )
        {
            try
            {
                QueueDescription queueDescription = new QueueDescription(path)
                {
                    RequiresDuplicateDetection          = requiresDuplicateDetection,
                    DuplicateDetectionHistoryTimeWindow = duplicateDetectionHistoryTimeWindow ?? TimeSpan.FromHours(1),
                    RequiresSession          = requiresSession,
                    MaxDeliveryCount         = maxDeliveryCount,
                    DefaultMessageTimeToLive = defaultMessageTTL ?? TimeSpan.FromHours(1),
                    EnableDeadLetteringOnMessageExpiration = enableDeadLetteringOnMessageExpiration
                };

                if (!_servicebusNamespaceManager.QueueExists(path))
                {
                    _servicebusNamespaceManager.CreateQueue(queueDescription);
                }
            }
            catch (Exception ex)
            {
                new NotImplementedException();
            }
        }
コード例 #8
0
        public bool Create(IDictionary <string, object> apiRequestModel)
        {
            bool result = false;

            if (null != apiRequestModel)
            {
                QueueModel queueRequest = apiRequestModel.ToEntity <QueueModel>();
                if (null != queueRequest)
                {
                    Logger.LogMessage(string.Format("Checking if queue with name {0} already exists in service bus namespace...", queueRequest.Name));
                    if (!CheckIfExists(queueRequest.Name))
                    {
                        Logger.LogMessage(string.Format(CultureInfo.InvariantCulture, "Creating queue with name {0} in service bus namespace", queueRequest.Name));
                        QueueDescription queueDescription = GenerateQueueDescription(queueRequest);
                        if (null != queueDescription)
                        {
                            Logger.LogMessage(string.Format(CultureInfo.InvariantCulture, "Creating queue with name {0} in service bus namespace...", queueRequest.Name));
                            nameSpaceManager.CreateQueue(queueDescription);
                            Logger.LogMessage(string.Format(CultureInfo.InvariantCulture, "Queue with name {0} created in service bus namespace", queueRequest.Name));
                            result = true;
                        }
                    }
                }
            }
            return(result);
        }
コード例 #9
0
        public void CreateQueue(string address)
        {
            if (DoNotCreateQueuesEnabled)
            {
                _log.Info("Transport configured to not create queue - skipping existencecheck and potential creation");
                return;
            }

            if (_namespaceManager.QueueExists(address))
            {
                return;
            }

            var queueDescription = new QueueDescription(address)
            {
                MaxSizeInMegabytes = 1024,
                MaxDeliveryCount   = 100,
                LockDuration       = _peekLockDuration,
                EnablePartitioning = PartitioningEnabled
            };

            try
            {
                _log.Info("Input queue '{0}' does not exist - will create it now", _inputQueueAddress);
                _namespaceManager.CreateQueue(queueDescription);
                _log.Info("Created!");
            }
            catch (MessagingEntityAlreadyExistsException)
            {
                // fair enough...
                _log.Info("MessagingEntityAlreadyExistsException - carrying on");
            }
        }
コード例 #10
0
        public void CreateQueue(string address)
        {
            if (_namespaceManager.QueueExists(address))
            {
                return;
            }

            var queueDescription = new QueueDescription(address)
            {
                MaxSizeInMegabytes = 1024,
                MaxDeliveryCount   = 100,
                LockDuration       = _peekLockDuration,
            };

            try
            {
                _log.Info("Input queue '{0}' does not exist - will create it now", _inputQueueAddress);
                _namespaceManager.CreateQueue(queueDescription);
                _log.Info("Created!");
            }
            catch (MessagingEntityAlreadyExistsException)
            {
                // fair enough...
                _log.Info("MessagingEntityAlreadyExistsException - carrying on");
            }
        }
コード例 #11
0
 public void CreateQueueIfDoesntExist(string queueName)
 {
     if (!namespaceManager.QueueExists(queueName))
     {
         namespaceManager.CreateQueue(queueName);
     }
 }
コード例 #12
0
        public void CreateQueue(string queueName)
        {
            if (_manager == null)
            {
                throw new TransportException(_address.Uri, "The namespace manager is not available");
            }

            if (_manager.QueueExists(queueName))
            {
                return;
            }

            var description = new QueueDescription(queueName)
            {
                DefaultMessageTimeToLive = _address.DefaultMessageTimeToLive,
                EnableBatchedOperations  = _address.EnableBatchOperations,
                LockDuration             = _address.LockDuration,
                MaxDeliveryCount         = _address.MaxDeliveryCount,
            };

            try
            {
                _manager.CreateQueue(description);
            }
            catch (MessagingEntityAlreadyExistsException)
            {
            }
        }
コード例 #13
0
        public bool Create()
        {
            bool result = true;

            try
            {
                Logger.LogMessage("Creating service bus queue...");
                Logger.LogMessage("Please provide the name for queue: ");
                Name = Console.ReadLine();
                Logger.LogMessage(string.Format("Checking if queue with name {0} already exists in service bus namespace...", Name));
                if (!CheckIfExists(Name))
                {
                    Logger.LogMessage(string.Format(CultureInfo.InvariantCulture, "Creating queue with name {0} in service bus namespace", Name));
                    // Generate queue description
                    QueueDescription queueDescription = GenerateQueueDescription(Name);
                    // Create queue
                    Logger.LogMessage(string.Format(CultureInfo.InvariantCulture, "Creating queue with name {0} in service bus namespace...", Name));
                    nameSpaceManager.CreateQueue(queueDescription);
                    Logger.LogMessage(string.Format(CultureInfo.InvariantCulture, "Queue with name {0} created in service bus namespace", Name));
                }
                else
                {
                    result = false;
                }
            }
            catch
            {
                result = false;
                throw;
            }
            return(result);
        }
コード例 #14
0
        // Put: api/ReportGenerate
        public void Put(ReportRequest req)
        {
            string queuePath             = CloudConfigurationManager.GetSetting("queuePath");
            string queueConnectionString = CloudConfigurationManager.GetSetting("queueConnectionString");

            NamespaceManager nsm = NamespaceManager.CreateFromConnectionString(queueConnectionString);

            //create queue if it doesn't exist
            if (!nsm.QueueExists(queuePath))
            {
                Trace.TraceInformation("Creating queue: {0}...", queuePath);
                QueueDescription qd = new QueueDescription(queuePath);
                qd.RequiresDuplicateDetection = true; //this can't be changed later
                qd = nsm.CreateQueue(qd);
                Trace.TraceInformation("Queue created.");
            }

            //insert the Path to the queue
            QueueClient     queueClient = QueueClient.CreateFromConnectionString(queueConnectionString, queuePath);
            BrokeredMessage bm          = new BrokeredMessage();

            bm.Properties.Add("reportReq", req.Path);

            Trace.TraceInformation("Sending report gen request: {0}", req.Path);
            queueClient.Send(bm);
            Trace.TraceInformation("Request queued.");
            queueClient.Close();
        }
コード例 #15
0
        public AzureServiceBusMessageQueue ResetQueue()
        {
            namespaceManager.DeleteQueue(InputQueue);
            namespaceManager.CreateQueue(InputQueue);

            return(this);
        }
コード例 #16
0
        //static Mutex mutex;

        public MessageQueueHandler(string erpOrThunder, string messageType)
        {
            //mutex = new Mutex(true, "PERL");
            CloudSetQueueConnectionData(erpOrThunder, messageType);

            client = QueueClient.CreateFromConnectionString(cloudServiceBusConnectionString, queueName);

            serializer = new JsonSerializer()
            {
                TypeNameHandling       = TypeNameHandling.All,
                TypeNameAssemblyFormat = FormatterAssemblyStyle.Simple,
                ObjectCreationHandling = ObjectCreationHandling.Replace,
                ContractResolver       = new JsonPrivateSetterPropertyContractResolver(),
                DateFormatHandling     = DateFormatHandling.IsoDateFormat,
                DateTimeZoneHandling   = DateTimeZoneHandling.RoundtripKind,
                ConstructorHandling    = ConstructorHandling.AllowNonPublicDefaultConstructor,
            };

            serializer.Converters.Add(new IsoDateTimeConverter());

            try
            {
                namespaceManager = NamespaceManager.CreateFromConnectionString(cloudServiceBusConnectionString);
                if (!namespaceManager.QueueExists(queueName))
                {
                    namespaceManager.CreateQueue(queueName);
                }
            }
            catch (Exception)
            {
            }
        }
コード例 #17
0
        static void Main(string[] args)
        {
            NamespaceManager manager = NamespaceManager.Create(); // Automatycznie bierze informacje z App.config

            Console.WriteLine(manager.Address.ToString());
            //Wolę na początku - wygodniej "zaczynamy" zawsze od zera
            manager.DeleteTopic("2016obliczenia"); //Kasuje temat i subskrypcje
            manager.DeleteQueue("2016wynik");

            //Tworzenie Topics - tematu
            TopicDescription td = new TopicDescription("2016obliczenia");

            //Nie przewidujemy dużego ruchu nie wymagamy partycjonowania
            td.EnablePartitioning = false;
            //Wymagamy wykrywania duplikatów - by klient 2 razy nie wysłał tego samego polecenia
            td.RequiresDuplicateDetection = true;
            //Nie pozwalamy na tematy tylko w pamięci; chcemy żeby klient był pewien że wysłał wiadomość = wiadomość zostanie przetworzona
            td.EnableExpress = false;
            manager.CreateTopic(td); //Tworzenie tematu

            //Suma i średnia będzie wyliczana gdy opowiednia własciwość zostanie zdefiniowana
            manager.CreateSubscription("2016obliczenia", "log", new SqlFilter("1=1"));
            manager.CreateSubscription("2016obliczenia", "dodaj", new SqlFilter("operation=1"));
            manager.CreateSubscription("2016obliczenia", "odejmij", new SqlFilter("operation=2"));

            QueueDescription qd = new QueueDescription("2016wynik");

            qd.RequiresSession = true;
            manager.CreateQueue(qd);
            Console.WriteLine("Done, Enter");
            Console.ReadLine();
        }
コード例 #18
0
        public void CreateQueue(string address)
        {
            if (_namespaceManager.QueueExists(address))
            {
                return;
            }

            var queueDescription = new QueueDescription(address)
            {
                MaxSizeInMegabytes = 1024,
                MaxDeliveryCount   = 100,
                LockDuration       = _peekLockDuration,
                EnablePartitioning = PartitioningEnabled,
                UserMetadata       = string.Format("Created by Rebus {0:yyyy-MM-dd} - {0:HH:mm:ss}", DateTime.Now)
            };

            try
            {
                _log.Info("Queue '{0}' does not exist - will create it now", address);
                _namespaceManager.CreateQueue(queueDescription);
                _log.Info("Created!");
            }
            catch (MessagingEntityAlreadyExistsException)
            {
                // fair enough...
                _log.Info("MessagingEntityAlreadyExistsException - carrying on");
            }
        }
コード例 #19
0
ファイル: Bus.cs プロジェクト: jellebens/edt
        public void Publish <TCommand>(TCommand command) where TCommand : ICommand
        {
            if (command.Id == default(Guid))
            {
                throw new CommandMissingIdException();
            }

            string connectionString = CloudConfigurationManager.GetSetting(Settings.Bus.ConfigKey);

            NamespaceManager namespaceManager = NamespaceManager.CreateFromConnectionString(connectionString);

            if (!namespaceManager.QueueExists(Settings.Bus.Queue.SendCommand))
            {
                _Logger.InfoFormat("Queue does not exist creating queue {0}", Settings.Bus.Queue.SendCommand);
                QueueDescription queueDescription = namespaceManager.CreateQueue(Settings.Bus.Queue.SendCommand);
            }

            QueueClient Client = QueueClient.CreateFromConnectionString(connectionString, Settings.Bus.Queue.SendCommand);

            DataContractJsonSerializer serializer = JsonSerializerFactory.Create(command);

            BrokeredMessage message = new BrokeredMessage(command, serializer)
            {
                MessageId = command.Id.ToString()
            };

            _Logger.DebugFormat("Dispatching message with id {0}", message.MessageId);
            _JobService.New(command);

            Client.SendAsync(message);
        }
コード例 #20
0
        private void CreateStartMessage(string serviceBusConnectionString)
        {
            string queueName = ResolveName(StartQueueName);

            if (!_namespaceManager.QueueExists(queueName))
            {
                _namespaceManager.CreateQueue(queueName);
            }

            QueueClient queueClient = QueueClient.CreateFromConnectionString(serviceBusConnectionString, queueName);

            using (Stream stream = new MemoryStream())
                using (TextWriter writer = new StreamWriter(stream))
                {
                    writer.Write("E2E");
                    writer.Flush();
                    stream.Position = 0;

                    queueClient.Send(new BrokeredMessage(stream)
                    {
                        ContentType = "text/plain"
                    });
                }

            queueClient.Close();
        }
コード例 #21
0
        /// <summary>
        /// Creates a queue on the service bus, if the queue doesn't already exists
        /// </summary>
        /// <param name="namespaceManager">Service Bus namespace Manager that'll handle creation of the queue</param>
        /// /// <param name="queueName">The name of the queue to check for and create if not present</param>
        private static void RegisterQueue(NamespaceManager namespaceManager, string queueName)
        {
            if (namespaceManager == null)
            {
                throw new ArgumentNullException(nameof(namespaceManager));
            }
            if (string.IsNullOrWhiteSpace(queueName))
            {
                throw new ArgumentNullException(nameof(queueName));
            }

            if (namespaceManager.QueueExists(queueName))
            {
                return;
            }

            //Queue doesn't exist so create it
            var qd = new QueueDescription(queueName)
            {
                MaxSizeInMegabytes       = 1024,
                DefaultMessageTimeToLive = TimeSpan.FromMinutes(5)
            };


            namespaceManager.CreateQueue(qd);
        }
コード例 #22
0
        // This method will create a queue "sampleQueues/contosoQ" with 2 shared access authorization rules
        // for the Listen & Send rights. It uses SharedAccessSignature auth to create the queue and manage the
        // authorization rules for the queue.
        public static void CreateSASRuleOnEntity(string serviceNamespace, string qPath, string keyName, string key)
        {
            // Create an instance of NamespaceManager for the operation
            Uri              managementUri = ServiceBusEnvironment.CreateServiceUri("https", serviceNamespace, string.Empty);
            TokenProvider    sasTP         = TokenProvider.CreateSharedAccessSignatureTokenProvider(keyName, key);
            NamespaceManager nsm           = new NamespaceManager(managementUri, sasTP);
            QueueDescription qd            = new QueueDescription(qPath);

            // Setup a rule with send rights with keyName as "contosoQSendKey"
            // and add it to the queue description.
            Program.contosoQSendRule = new SharedAccessAuthorizationRule("contosoQSendKey",
                                                                         SharedAccessAuthorizationRule.GenerateRandomKey(),
                                                                         new[] { AccessRights.Send });
            qd.Authorization.Add(Program.contosoQSendRule);

            // Setup a rule with listen rights with keyName as "contosoQListenKey"
            // and add it to the queue description.
            Program.contosoQListenRule = new SharedAccessAuthorizationRule("contosoQListenKey",
                                                                           SharedAccessAuthorizationRule.GenerateRandomKey(),
                                                                           new[] { AccessRights.Listen });
            qd.Authorization.Add(Program.contosoQListenRule);

            // Setup a rule with manage rights with keyName as "contosoQManageKey"
            // and add it to the queue description.
            // A rule with the Manage right MUST also have the Send & Receive rights.
            Program.contosoQManageRule = new SharedAccessAuthorizationRule("contosoQManageKey",
                                                                           SharedAccessAuthorizationRule.GenerateRandomKey(),
                                                                           new[] { AccessRights.Manage, AccessRights.Listen, AccessRights.Send });
            qd.Authorization.Add(Program.contosoQManageRule);

            // Create the queue.
            nsm.CreateQueue(qd);
        }
コード例 #23
0
 public void CreateIfNotExists()
 {
     if (!Exists())
     {
         _namespaceManager.CreateQueue(QueueName);
     }
 }
コード例 #24
0
        public void Init(Address address, bool transactional)
        {
            try
            {
                queueName = address.Queue;
                var description = new QueueDescription(queueName)
                {
                    LockDuration                           = LockDuration,
                    MaxSizeInMegabytes                     = MaxSizeInMegabytes,
                    RequiresDuplicateDetection             = RequiresDuplicateDetection,
                    RequiresSession                        = RequiresSession,
                    DefaultMessageTimeToLive               = DefaultMessageTimeToLive,
                    EnableDeadLetteringOnMessageExpiration = EnableDeadLetteringOnMessageExpiration,
                    DuplicateDetectionHistoryTimeWindow    = DuplicateDetectionHistoryTimeWindow,
                    MaxDeliveryCount                       = MaxDeliveryCount,
                    EnableBatchedOperations                = EnableBatchedOperations
                };

                namespaceClient.CreateQueue(description);
            }
            catch (MessagingEntityAlreadyExistsException)
            {
                // the queue already exists, which is ok
            }

            queueClient = factory.CreateQueueClient(queueName, ReceiveMode.PeekLock);

            useTransactions = transactional;
        }
コード例 #25
0
 private static void InitializeQueue()
 {
     if (!_namespaceManager.QueueExists(Constants.ExpenseQueue))
     {
         _namespaceManager.CreateQueue(Constants.ExpenseQueue);
     }
 }
コード例 #26
0
            void CreateQueue(NamespaceManager namespaceManager, Uri serviceUri, string queueName)
            {
                if (namespaceManager == null)
                {
                    throw new TransportException(serviceUri, "The namespace manager is not available");
                }

                var description = new QueueDescription(queueName)
                {
                    DefaultMessageTimeToLive = TimeSpan.FromDays(365),
                    EnableBatchedOperations  = true,
                    LockDuration             = TimeSpan.FromMinutes(5),
                    MaxDeliveryCount         = 5,
                    EnableDeadLetteringOnMessageExpiration = true,
                    DuplicateDetectionHistoryTimeWindow    = TimeSpan.FromMinutes(10),
                };

                try
                {
                    var queueDescription = namespaceManager.CreateQueue(description);
                }
                catch (MessagingEntityAlreadyExistsException)
                {
                }
            }
コード例 #27
0
        public void TestGetQueues()
        {
            string           name        = "TestGetQueues";
            NamespaceManager ns          = NamespaceManager.CreateFromConnectionString(serviceBusConnectionString);
            QueueDescription description = ns.CreateQueue(name);

            Assert.IsTrue(null != description);

            try
            {
                QueueDescription testQueue = ns.GetQueues().FirstOrDefault(e => e.Path.Equals(name, StringComparison.InvariantCultureIgnoreCase));
                Assert.IsNotNull(testQueue);

                if (!ns.QueueExists(name, out description))
                {
                    Assert.Fail("Queue did not exist");
                }
                else
                {
                    Assert.IsTrue(null != description);
                }
            }
            finally
            {
                ns.DeleteQueue(name);
                if (ns.QueueExists(name, out description))
                {
                    Assert.Fail("Queue was not deleted");
                }
            }
        }
コード例 #28
0
 private QueueClient CreateQueueClient(string queueName)
 {
     if (!_namespaceManager.QueueExists(queueName))
     {
         _namespaceManager.CreateQueue(queueName);
     }
     return(_messageFactory.CreateQueueClient(queueName));
 }
コード例 #29
0
        public void CreateQueue(string queuePath)
        {
            Console.Write("\tCreating queue: {0}...", queuePath);
            var description       = GetQueueDescription(queuePath);
            var createDescription = m_NamespaceManager.CreateQueue(description);

            Console.WriteLine("Done!");
        }
コード例 #30
0
ファイル: Queue.cs プロジェクト: aranasoft/cobweb-azure
 protected void EnsureQueue()
 {
     if (!NamespaceManager.QueueExists(Name))
     {
         NamespaceManager.CreateQueue(Name);
         queueValidated = true;
     }
 }
コード例 #31
0
 static UtilityBus()
 {
     spaceManager = NamespaceManager.CreateFromConnectionString(ConfigurationManager.AppSettings["Microsoft.ServiceBus.ConnectionString"]);
     if (!spaceManager.QueueExists(ConfigurationManager.AppSettings["QueueName"]))
     {
         spaceManager.CreateQueue(ConfigurationManager.AppSettings["QueueName"]);
     }
 }
コード例 #32
0
        static void Main()
        {
            string queueNameDupDection   = "RemoveDuplicatesQueue";
            string queueNameNoDupDection = "DefaultQueue";


            GetUserCredentials();

            // Get ServiceBusNamespaceClient for management operations
            NamespaceManager namespaceManager = NamespaceManager.CreateFromConnectionString(serviceBusConnectionString);

            // 1. Create a queue without duplicate detection enabled
            Console.WriteLine("\nCreating {0} ...", queueNameNoDupDection);
            if (namespaceManager.QueueExists(queueNameNoDupDection))
            {
                namespaceManager.DeleteQueue(queueNameNoDupDection);
            }
            namespaceManager.CreateQueue(queueNameNoDupDection);
            Console.WriteLine("Created {0}", queueNameNoDupDection);

            // Get messageFactory for runtime operation
            MessagingFactory messagingFactory = MessagingFactory.CreateFromConnectionString(serviceBusConnectionString);

            SendReceive(messagingFactory, queueNameNoDupDection);

            // 2. Create a queue with duplicate detection enabled
            Console.WriteLine("\nCreating {0} ...", queueNameDupDection);
            if (namespaceManager.QueueExists(queueNameDupDection))
            {
                namespaceManager.DeleteQueue(queueNameDupDection);
            }
            namespaceManager.CreateQueue(new QueueDescription(queueNameDupDection)
            {
                RequiresDuplicateDetection = true
            });
            Console.WriteLine("Created {0}", queueNameDupDection);
            SendReceive(messagingFactory, queueNameDupDection);

            Console.WriteLine("\nPress [Enter] to exit.");
            Console.ReadLine();

            // Cleanup:
            namespaceManager.DeleteQueue(queueNameDupDection);
            namespaceManager.DeleteQueue(queueNameNoDupDection);
        }
コード例 #33
0
ファイル: Program.cs プロジェクト: cleancodenz/ServiceBus
        //Queue and its credentials in another project, this never called
        static void CreateQueue()
        {
            // Create management credentials
            TokenProvider credentials = TokenProvider.CreateSharedAccessSignatureTokenProvider(manageKeyName, manageKeyValue);

            NamespaceManager namespaceClient = new NamespaceManager(ServiceBusEnvironment.CreateServiceUri("sb", ServiceNamespace, string.Empty), credentials);

            QueueDescription myQueue = namespaceClient.CreateQueue("MyQueue");
        }
コード例 #34
0
 static void CreateQueue(Uri baseAddress,string queueName,QueueDescription queueDescription,TokenProvider credentials)
 { 
    if(QueueExists(baseAddress,queueName,credentials))
    {
       DeleteQueue(baseAddress,queueName,credentials);
    }  
    NamespaceManager namespaceClient = new NamespaceManager(baseAddress,credentials);
    namespaceClient.CreateQueue(queueDescription);
 }
コード例 #35
0
        public void CreateQueue_WhenSslErrorOccurs_MessagingExceptionExceptionIsThrown()
        {
            string queueName = Guid.NewGuid().ToString();

            Uri validCertUri = ServiceBusHelper.GetLocalHttpsEndpoint();
            Uri invalidCertUri = new Uri("https://localhost:9355/ServiceBusDefaultNamespace");
            TokenProvider tokenProvider = TokenProvider.CreateWindowsTokenProvider(new Uri[] { validCertUri });
            NamespaceManager nsManager = new NamespaceManager(invalidCertUri, tokenProvider);

            Assert.Throws<MessagingException>(() => nsManager.CreateQueue(queueName));
        }
コード例 #36
0
        private void TryCreateQueueIfNotExists(NamespaceManager namespaceManager, string queueName)
        {
            if (!namespaceManager.QueueExists(queueName))
            {
                var queueDescription = new QueueDescription(queueName)
                {
                    MaxSizeInMegabytes = 5120,
                    DefaultMessageTimeToLive = TimeSpan.FromDays(7),
                    RequiresDuplicateDetection = false,
                    MaxDeliveryCount = 10
                };

                namespaceManager.CreateQueue(queueDescription);
            }
        }
コード例 #37
0
        public bool CreateQueue(string queueId)
        {
            // Holds credentials and handles tokens from AZS
            TokenProvider tokenProvider = GetTokenProvider();

            Uri uri = GetServiceBusUri();

            var namespaceManager = new NamespaceManager(uri, tokenProvider);

            if (!namespaceManager.QueueExists(queueId))
            {
                namespaceManager.CreateQueue(queueId);
            }

            throw new NotImplementedException();
        }
コード例 #38
0
        private QueueClient PrepareWatchingQueue()
        {
            var namespaceManagerSetting = new NamespaceManagerSettings()
            {
                TokenProvider = TokenProvider.CreateSharedSecretTokenProvider(ServiceBusIssuerName, ServiceBusIssuerSecret),
            };

            var namespaceManager = new NamespaceManager(ServiceBusAddress, namespaceManagerSetting);
            if (!namespaceManager.QueueExists(_watchingQueueName))
            {
                namespaceManager.CreateQueue(_watchingQueueName);
            }

            var factory = MessagingFactory.Create(ServiceBusAddress, SharedSecretTokenProvider.CreateSharedSecretTokenProvider(ServiceBusIssuerName, ServiceBusIssuerSecret));
            var queueClient = factory.CreateQueueClient(_watchingQueueName);
            return queueClient;
        }
コード例 #39
0
        private static void CreateQueuesIfNotExists(NamespaceManager namespaceManager, ServiceBusQueueOptions options)
        {
            foreach (var queue in options.Queues)
            {
                var prefixed = options.GetQueueName(queue);

                if (!namespaceManager.QueueExists(prefixed))
                {
                    var description = new QueueDescription(prefixed);

                    if (options.Configure != null)
                    {
                        options.Configure(description);
                    }

                    namespaceManager.CreateQueue(description);
                }
            }
        }
コード例 #40
0
        public async static Task MainSync()
        {
            ServiceNamespace = ConfigurationManager.AppSettings["ServiceNamespace"];
            // Issuer key
            sasKeyValue = ConfigurationManager.AppSettings["SASKey"];

            // Get test async
            string testId = "56b747d9fdfad82a0cfdce65";

            HttpClient client = new HttpClient();
            client.BaseAddress = new Uri("http://getcmewebapi.azurewebsites.net/");
            Task<string> testTask = client.GetStringAsync("api/v1/Test/" + testId);

            // do other stuff while we're waiting for the test ...

            // Create management credentials
            TokenProvider credentials = TokenProvider.CreateSharedAccessSignatureTokenProvider(sasKeyName, sasKeyValue);
            NamespaceManager namespaceClient =
                new NamespaceManager(
                    ServiceBusEnvironment.CreateServiceUri("sb", ServiceNamespace, string.Empty),
                    credentials);
            QueueDescription myQueue;
            if (!namespaceClient.QueueExists(QUEUE))
            {
                myQueue = namespaceClient.CreateQueue(QUEUE);
            }
            MessagingFactory factory = MessagingFactory.Create(ServiceBusEnvironment.CreateServiceUri("sb", ServiceNamespace, string.Empty), credentials);
            QueueClient myQueueClient = factory.CreateQueueClient(QUEUE);

            // Send message
            BrokeredMessage message = new BrokeredMessage();

            // we need the test now ...
            var testJsonString = await testTask;
            Test test = JObject.Parse(testJsonString).ToObject<Test>();

            message.Properties.Add("TestId", test.Id);
            message.Properties.Add("InputDataId", test.InputDataId);
            message.Properties.Add("DateSetId", test.DateSetId);
            myQueueClient.Send(message);
        }
コード例 #41
0
 static void Main(string[] args)
 {
     GetUserCredentials();
     TokenProvider credentials = null;
     Uri serviceUri = null;
     CreateTokenProviderAndServiceUri(out credentials, out serviceUri);
     MessagingFactory factory = null;
     try
     {
         NamespaceManager namespaceClient = new NamespaceManager(serviceUri, credentials);
         if (namespaceClient == null)
         {
             Console.WriteLine("\nUnexpected Error: NamespaceManager is NULL");
             return;
         }
         Console.WriteLine("\nCreating Queue '{0}'...", QueueName);
         //Eliminar se a queue já existir
         if (namespaceClient.QueueExists(QueueName))
             namespaceClient.DeleteQueue(QueueName);
         namespaceClient.CreateQueue(QueueName);
         QueueClient myQueueClient = CreateQueueClient(serviceUri, credentials, out factory);
         List<BrokeredMessage> messageList = new List<BrokeredMessage>();
         messageList.Add(CreateIssueMessage("1", "First message "));
         messageList.Add(CreateIssueMessage("2", "Second message "));
         messageList.Add(CreateIssueMessage("3", "Third message "));
         SendListOfMessages(messageList, myQueueClient);
     }
     catch (Exception e)
     {
         Console.WriteLine("Unexpected exception {0}", e.ToString());
         throw;
     }
     finally
     {
         if (factory != null)
             factory.Close();
     }
 }
コード例 #42
0
ファイル: Program.cs プロジェクト: siszoey/getPoisFromWeibo
        static void Main(string[] args)
        {
            try
            {
                if (args.Count() != 0)
                {

                    if (args[0].ToLower().CompareTo("createqueue") == 0)
                    {
                        // No processing to occur other than creating the queue.
                        namespaceManager = NamespaceManager.CreateFromConnectionString(connectionString);
                        namespaceManager.CreateQueue(queueName);
                        Console.WriteLine("Queue named {0} was created.", queueName);
                        Environment.Exit(0);
                    }

                    if (args[0].ToLower().CompareTo("deletequeue") == 0)
                    {
                        // No processing to occur other than deleting the queue.
                        namespaceManager = NamespaceManager.CreateFromConnectionString(connectionString);
                        namespaceManager.DeleteQueue(queueName);
                        Console.WriteLine("Queue named {0} was deleted.", queueName);
                        Environment.Exit(0);
                    }
                }
                //queueClient = QueueClient.CreateFromConnectionString(connectionString, queueName);
                Run(305);
                Console.WriteLine("Final solution found!");
                //queueClient.Send(new BrokeredMessage("Complete"));

                //queueClient.Close();
                //Environment.Exit(0);
            }
            catch (ServerBusyException serverBusyException)
            {
                Console.WriteLine("ServerBusyException encountered");
                Console.WriteLine(serverBusyException.Message);
                Console.WriteLine(serverBusyException.StackTrace);
                if(streamWriter!=null)
                {
                    streamWriter.WriteLine(serverBusyException.Message);
                    streamWriter.WriteLine(serverBusyException.StackTrace);
                    streamWriter.Close();
                }
                int fileCount = GetFileCountFromDir(@"output/")+10;
                Run(fileCount);
                //Environment.Exit(-1);
            }
            catch (ServerErrorException serverErrorException)
            {
                Console.WriteLine("ServerErrorException encountered");
                Console.WriteLine(serverErrorException.Message);
                Console.WriteLine(serverErrorException.StackTrace);
                if (streamWriter != null)
                {
                    streamWriter.WriteLine(serverErrorException.Message);
                    streamWriter.WriteLine(serverErrorException.StackTrace);
                    streamWriter.Close();
                }
                int fileCount = GetFileCountFromDir(@"output/")+10;
                Run(fileCount);
                //Environment.Exit(-1);
            }
            catch (Exception exception)
            {
                Console.WriteLine("Exception encountered");
                Console.WriteLine(exception.Message);
                Console.WriteLine(exception.StackTrace);
                if (streamWriter != null)
                {
                    streamWriter.WriteLine(exception.Message);
                    streamWriter.WriteLine(exception.StackTrace);
                    streamWriter.Close();
                }
                int fileCount = GetFileCountFromDir(@"output/")+10;
                Run(fileCount);
                //Environment.Exit(-1);
            }
        }
コード例 #43
0
ファイル: Client.cs プロジェクト: NorfolkNChance/azuretest
        /// <summary>
        /// Setup and connect to Service Bus.
        /// </summary>
        /// <param name="namespaceManager"></param>
        /// <param name="messagingFactory"></param>
        /// <param name="durableMessageSender"></param>
        private static void ServiceBusConnection(out NamespaceManager namespaceManager, out MessagingFactory messagingFactory, out DurableMessageSender durableMessageSender)
        {
            //Read user credentials.

            //Console.Write("Service Namespace: ");
            //string serviceNamespace = Console.ReadLine();

            //Console.Write("Issuer Name: ");
            //string issuerName = Console.ReadLine();

            //Console.Write("Issuer Key: ");
            //string issuerKey = Console.ReadLine();
            //Console.WriteLine();

            string serviceNamespace = "scoring";
            string issuerName = "owner";
            string issuerKey = "r3JxwjeQwuWwwLasXSQR7tDGx2FCiQLijr9ZBzPCti4=";
            Console.WriteLine("Service Namespace: " + serviceNamespace);
            Console.WriteLine("Issuer Name: " + issuerName);
            Console.WriteLine("Issuer Key: " + issuerKey);

            // Create token provider.
            Uri namespaceUri = ServiceBusEnvironment.CreateServiceUri("sb", serviceNamespace, string.Empty);
            Console.WriteLine("Namespace URI: " + namespaceUri.ToString());
            TokenProvider tokenProvider = TokenProvider.CreateSharedSecretTokenProvider(issuerName, issuerKey);

            // Create namespace manager and create Service Bus queue if it does not exist already.
            namespaceManager = new NamespaceManager(namespaceUri, tokenProvider);
            QueueDescription queueDescription = new QueueDescription(ServiceBusQueueOrTopicName);
            queueDescription.RequiresDuplicateDetection = true;
            if (!namespaceManager.QueueExists(ServiceBusQueueOrTopicName))
            {
                namespaceManager.CreateQueue(queueDescription);
                Console.WriteLine("Created Service Bus queue \"{0}\".", ServiceBusQueueOrTopicName);
            }

            // Create a MessagingFactory.
            messagingFactory = MessagingFactory.Create(namespaceUri, tokenProvider);

            // Create a durable sender.
            durableMessageSender = new DurableMessageSender(messagingFactory, ServiceBusQueueOrTopicName);
        }
コード例 #44
0
            void CreateQueue(NamespaceManager namespaceManager, Uri serviceUri, string queueName)
            {
                if (namespaceManager == null)
                    throw new TransportException(serviceUri, "The namespace manager is not available");

                var description = new QueueDescription(queueName)
                {
                    DefaultMessageTimeToLive = TimeSpan.FromDays(365),
                    EnableBatchedOperations = true,
                    LockDuration = TimeSpan.FromMinutes(5),
                    MaxDeliveryCount = 5,
                    EnableDeadLetteringOnMessageExpiration = true,
                    DuplicateDetectionHistoryTimeWindow = TimeSpan.FromMinutes(10),
                };

                try
                {
                    var queueDescription = namespaceManager.CreateQueue(description);
                }
                catch (MessagingEntityAlreadyExistsException)
                {
                }
            }
コード例 #45
0
ファイル: Program.cs プロジェクト: siszoey/getPoisFromWeibo
        static void Main(string[] args)
        {
            try
            {

                //String serviceBusNamespace = "azuretest-ns";
                //String keyname = "RootManageSharedAccessKey";
                //String key = "3HzV1a5bcs/OOj0YS+Iec7XPA9ys2s9oqrUrg8pcILA=";

                //String connectionString = @"Endpoint=sb://" +
                //       serviceBusNamespace +
                //       @".servicebus.chinacloudapi.cn/;SharedAccessKeyName=" +
                //       keyname + @";SharedSecretValue=" + key;

                String connectionString = @"Endpoint=sb://azuretest-ns.servicebus.chinacloudapi.cn/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=3HzV1a5bcs/OOj0YS+Iec7XPA9ys2s9oqrUrg8pcILA=";

                int numCities = 10; // Use as the default, if no value is specified
                // at the command line.
                if (args.Count() != 0)
                {

                    if (args[0].ToLower().CompareTo("createqueue") == 0)
                    {
                        // No processing to occur other than creating the queue.
                        namespaceManager = NamespaceManager.CreateFromConnectionString(connectionString);
                        namespaceManager.CreateQueue(queueName);
                        Console.WriteLine("Queue named {0} was created.", queueName);
                        Environment.Exit(0);
                    }

                    if (args[0].ToLower().CompareTo("deletequeue") == 0)
                    {
                        // No processing to occur other than deleting the queue.
                        namespaceManager = NamespaceManager.CreateFromConnectionString(connectionString);
                        namespaceManager.DeleteQueue("TSPQueue");
                        Console.WriteLine("Queue named {0} was deleted.", queueName);
                        Environment.Exit(0);
                    }

                    // Neither creating or deleting a queue.
                    // Assume the value passed in is the number of cities to solve.
                    numCities = Convert.ToInt32(args[0]);
                }

                Console.WriteLine("Running for {0} cities.", numCities);

                queueClient = QueueClient.CreateFromConnectionString(connectionString, "TSPQueue");

                List<int> startCities = new List<int>();
                List<int> restCities = new List<int>();

                startCities.Add(0);
                for (int i = 1; i < numCities; i++)
                {
                    restCities.Add(i);
                }
                distances = new double[numCities, numCities];
                cityNames = new String[numCities];
                BuildDistances(@"c:\tsp\cities.txt", numCities);
                minDistance = -1;
                bestOrder = new int[numCities];
                permutation(startCities, 0, restCities);
                Console.WriteLine("Final solution found!");
                queueClient.Send(new BrokeredMessage("Complete"));

                queueClient.Close();
                Environment.Exit(0);

            }
            catch (ServerBusyException serverBusyException)
            {
                Console.WriteLine("ServerBusyException encountered");
                Console.WriteLine(serverBusyException.Message);
                Console.WriteLine(serverBusyException.StackTrace);
                Environment.Exit(-1);
            }
            catch (ServerErrorException serverErrorException)
            {
                Console.WriteLine("ServerErrorException encountered");
                Console.WriteLine(serverErrorException.Message);
                Console.WriteLine(serverErrorException.StackTrace);
                Environment.Exit(-1);
            }
            catch (Exception exception)
            {
                Console.WriteLine("Exception encountered");
                Console.WriteLine(exception.Message);
                Console.WriteLine(exception.StackTrace);
                Environment.Exit(-1);
            }
        }
コード例 #46
0
        private QueueClient GetOrCreateQueue(Uri namespaceUri, TokenProvider tokenProvider)
        {
            NamespaceManager namespaceClient = new NamespaceManager(namespaceUri, tokenProvider);

            // Create queue if not already exist.
            if (!namespaceClient.QueueExists(MyQueuePath))
            {
                namespaceClient.CreateQueue(this.queueDescription);
                Console.WriteLine("Queue created.");
            }
            else
            {
                Console.WriteLine("Queue already exists.");
            }

            MessagingFactory factory = MessagingFactory.Create(namespaceUri, tokenProvider);
            Console.WriteLine("Creating queue client...");
            return factory.CreateQueueClient(MyQueuePath, ReceiveMode.PeekLock);            
        }
コード例 #47
0
ファイル: WorkerRole.cs プロジェクト: JimmyE/Shark123
        private QueueClient CreateQueueIfNecessary(NamespaceManager namespaceManager, string queueName)
        {
            //Trace.TraceWarning("Does queue exist: " + queueName);
            if (!namespaceManager.QueueExists(queueName))
            {
                Trace.TraceWarning("CreateQueue: " + _connectionString + " " + queueName);
                namespaceManager.CreateQueue(queueName);
            }

            Trace.TraceWarning("Get QueueClient from ConnectionString: " + _connectionString + " " + queueName);
            var qc = QueueClient.CreateFromConnectionString(_connectionString, queueName);
            if (qc == null)
            {
                Trace.TraceError("CreateQueue() failed - queueClient is null");
            }
            return qc;
            //return QueueClient.CreateFromConnectionString(_connectionString, queueName);
        }
コード例 #48
0
        private void WriteQueueMessage(NamespaceManager namespaceManager, string connectionString, string queueName, string message)
        {
            if (!namespaceManager.QueueExists(queueName))
            {
                namespaceManager.CreateQueue(queueName);
            }

            QueueClient queueClient = QueueClient.CreateFromConnectionString(connectionString, queueName);

            using (Stream stream = new MemoryStream())
            using (TextWriter writer = new StreamWriter(stream))
            {
                writer.Write(message);
                writer.Flush();
                stream.Position = 0;

                queueClient.Send(new BrokeredMessage(stream) { ContentType = "text/plain" });
            }

            queueClient.Close();
        }
コード例 #49
0
        private QueueClient CreateQueueClientIfNotExist(string p_healthMonitorCommandQueueName, bool p_requiresSession, string p_serviceBusUri, TokenProvider p_tokenProvider, NamespaceManager p_namespaceManager)
        {
            if (!p_namespaceManager.QueueExists(p_healthMonitorCommandQueueName))
            {
                QueueDescription qDesc = new QueueDescription(p_healthMonitorCommandQueueName);
                qDesc.MaxSizeInMegabytes = 5120;
                qDesc.DefaultMessageTimeToLive = TimeSpan.FromDays(14); // on Free tier pricing, max 14 days are allowed
                qDesc.EnableDeadLetteringOnMessageExpiration = false;
                qDesc.LockDuration = TimeSpan.FromMinutes(5);  // default is 30seconds, I have changed it to 5minutes, which is the maximum
                qDesc.RequiresDuplicateDetection = false;
                // 'RequiresSession' cannot be set when creating a Queue IF the namespace 'sqhealthmonitorservicebusqueue-ns' is using free 'Basic' tier.
                qDesc.RequiresSession = p_requiresSession;      // if there is only one consumer of the command queue, no sessionID is required, for the commandResult there are more consumers
                qDesc.EnablePartitioning = true;
                // until this line is the properties that can be set in Azure portal

                qDesc.EnableBatchedOperations = false;      // for low latency, quick response, don't wait miliseconds to batch messages, but send them instantly
                var qDescCreated = p_namespaceManager.CreateQueue(qDesc);
            }
            MessagingFactorySettings mfs = new MessagingFactorySettings();
            mfs.TokenProvider = p_tokenProvider;
            //mfs.TransportType = TransportType.Amqp;       // 400msec latency
            mfs.TransportType = Microsoft.ServiceBus.Messaging.TransportType.NetMessaging;     // 50msec latency
            mfs.NetMessagingTransportSettings.BatchFlushInterval = TimeSpan.Zero;  // instead of 20msec, // latency is 37msec was the minimum I measured (instead of 43msec)
            MessagingFactory factory = MessagingFactory.Create(p_serviceBusUri, mfs);
            var queueClient = factory.CreateQueueClient(p_healthMonitorCommandQueueName, ReceiveMode.PeekLock);
            queueClient.PrefetchCount = 0;  // it is the default too, and it was 0 in the fast and in the slow cases too
            return queueClient;
        }