예제 #1
0
        public override bool OnStart()
        {
            //Setting up service bus
            var credentials = TokenProvider.CreateSharedSecretTokenProvider(_issuerName, _issuerKey);

            _factory =
                MessagingFactory.Create(ServiceBusEnvironment.CreateServiceUri("sb", _serviceNamespace, string.Empty), credentials);

            //Input queue client and error queue client creation
            _inputQueueClient = _factory.CreateQueueClient(_inputQueue);
            _errorQueueClient = _factory.CreateQueueClient(_errorQueue);

            return base.OnStart();
        }
        public DurableSender(MessagingFactory messagingFactory, string serviceBusQueueName)
        {
            // Create a Service Bus queue client to send messages to the Service Bus queue.
            this.queueClient = messagingFactory.CreateQueueClient(serviceBusQueueName);

            // Create MSMQ queue if it doesn't exit. If it does, open the existing MSMQ queue.
            this.msmqQueue = MsmqHelper.GetMsmqQueue(MsmqHelper.CreateMsmqQueueName(messagingFactory.Address.DnsSafeHost, serviceBusQueueName, "SEND"));

            // Create MSMQ deadletter queue if it doesn't exit. If it does, open the existing MSMQ deadletter queue.
            this.msmqDeadletterQueue = MsmqHelper.GetMsmqQueue(MsmqHelper.CreateMsmqQueueName(messagingFactory.Address.DnsSafeHost, serviceBusQueueName, "SEND_DEADLETTER"));

            // Start receiving messages from the MSMQ queue.
            this.MsmqPeekBegin();
        }
예제 #3
0
        protected void btnSend_Click(object sender, EventArgs e)
        {
            // create a parameter object for the messaging factory that configures
            // the MSI token provider for Service Bus and use of the AMQP protocol:
            MessagingFactorySettings messagingFactorySettings = new MessagingFactorySettings
            {
                TokenProvider = TokenProvider.CreateManagedServiceIdentityTokenProvider(ServiceAudience.ServiceBusAudience),
                TransportType = TransportType.Amqp
            };

            // create the messaging factory using the namespace endpoint name supplied by the user
            MessagingFactory messagingFactory = MessagingFactory.Create($"sb://{txtNamespace.Text}/",
                                                                        messagingFactorySettings);

            // create a queue client using the queue name supplied by the user
            QueueClient queueClient = messagingFactory.CreateQueueClient(txtQueueName.Text);

            // send a message using the input text
            queueClient.Send(new BrokeredMessage(Encoding.UTF8.GetBytes(txtData.Text)));

            queueClient.Close();
            messagingFactory.Close();
        }
예제 #4
0
        private static void CreateQueue(int messageCount)
        {
            QueueDescription catsQueue = null;

            if (!_namespaceManager.QueueExists("categoryqueue"))
            {
                catsQueue = _namespaceManager.CreateQueue("categoryqueue");
            }

            MessagingFactory factory = MessagingFactory.Create(_namespaceManager.Address, _namespaceManager.Settings.TokenProvider);

            QueueClient catsQueueClient = factory.CreateQueueClient("categoryqueue");

            Console.WriteLine("Sending messages to the queueu.....");
            for (int i = 0; i < messageCount; i++)
            {
                var cat = _messageList[i];
                cat.Label = cat.Properties[(i + 1).ToString()].ToString();
                //Console.WriteLine(cat.GetType());
                catsQueueClient.Send(cat);
                Console.WriteLine($"Message ID: {cat.MessageId}, Message Sent: {cat.Label}");
            }
        }
예제 #5
0
        public static void SendQ(FireEvent fireEvent)
        {
            TokenProvider credentials = TokenProvider.CreateSharedSecretTokenProvider(QSender.IssuerName, QSender.IssuerKey);
            Uri           serviceUri  = ServiceBusEnvironment.CreateServiceUri("sb", QSender.ServiceNamespace, string.Empty);

            MessagingFactory factory = null;

            factory = MessagingFactory.Create(serviceUri, credentials);

            QueueClient qClient = factory.CreateQueueClient(QSender.QueueName);

            BrokeredMessage brokeredMessage = new BrokeredMessage(fireEvent, new DataContractSerializer(typeof(FireEvent)));

            brokeredMessage.Properties.Add("ZipCode", fireEvent.ZipCode);
            brokeredMessage.Properties.Add("AlertType", fireEvent.AlertType);
            brokeredMessage.Properties.Add("EventType", "Weather");
            brokeredMessage.Properties.Add("IsAlert", true);

            qClient.Send(brokeredMessage);

            Console.WriteLine("press enter to exit....");
            Console.Read();
        }
예제 #6
0
        public ActionResult Create(EmpDetailsInfo emp)
        {
            const string QueueName        = "empQueue";
            string       connectionString = CloudConfigurationManager.GetSetting("Microsoft.ServiceBus.ConnectionString");
            var          nameSpaceManager = NamespaceManager.CreateFromConnectionString(connectionString);

            if (!nameSpaceManager.QueueExists(QueueName))
            {
                nameSpaceManager.CreateQueue(QueueName);
            }

            MessagingFactory factory = MessagingFactory.CreateFromConnectionString(connectionString);
            QueueClient      myQ     = factory.CreateQueueClient(QueueName);

            BrokeredMessage bm = new BrokeredMessage(emp);

            myQ.Send(bm);

            ViewBag.Status = "Message Send";


            return(View());
        }
예제 #7
0
        public static void Main()
        {
            // Get credentials and set up management and runtime messaging entities:

            GetUserCredentials();
            NamespaceManager namespaceClient  = CreateNamespaceManager();
            MessagingFactory messagingFactory = CreateMessagingFactory();

            Console.WriteLine("Creating queue 'OrdersService'...");

            if (namespaceClient.QueueExists("OrdersService"))
            {
                namespaceClient.DeleteQueue("OrdersService");
            }

            QueueDescription queue = namespaceClient.CreateQueue("OrdersService");

            QueueClient queueClient = messagingFactory.CreateQueueClient(queue.Path, ReceiveMode.ReceiveAndDelete);

            // Send messages to queue, of different order types:
            Console.WriteLine("Sending messages to queue...");
            CreateAndSendOrderMessage("DeliveryOrder", 1, 10, 15, queueClient);
            CreateAndSendOrderMessage("StayInOrder", 2, 15, 500, queueClient);
            CreateAndSendOrderMessage("TakeOutOrder", 3, 1, 25, queueClient);
            CreateAndSendOrderMessage("TakeOutOrder", 5, 3, 25, queueClient);
            CreateAndSendOrderMessage("DeliveryOrder", 4, 100, 100000, queueClient);


            Console.WriteLine();
            Console.WriteLine("Press [Enter] to delete queue and exit.");
            Console.ReadLine();

            // Cleanup:
            messagingFactory.Close();
            namespaceClient.DeleteQueue(queue.Path);
        }
예제 #8
0
        static void CreateQueueToRead()
        {
            TokenProvider tokenProvider = _namespaceManager.Settings.TokenProvider;

            if (_namespaceManager.QueueExists("categoryqueue"))
            {
                MessagingFactory factory         = MessagingFactory.Create(_namespaceManager.Address, tokenProvider);
                QueueClient      catsQueueclient = factory.CreateQueueClient("categoryqueue");
                Console.WriteLine("Receiving the message from the queue...");
                BrokeredMessage message;
                int             ctr = 1;
                while ((message = catsQueueclient.Receive(new TimeSpan(hours: 0, minutes: 1, seconds: 5))) != null)
                {
                    Console.WriteLine($"Message received,Sequence:{message.SequenceNumber}, MessageID :{message.MessageId},\nCat:{ message.Properties[(ctr++).ToString()]}");
                    message.Complete();
                    Console.WriteLine("processing Message(Sleeping)...");
                    Thread.Sleep(2000);
                }
                factory.Close();
                catsQueueclient.Close();
                _namespaceManager.DeleteQueue("categoryqueue");
                Console.WriteLine("Finished getting alll the data from the queue ,Press any key to exit");
            }
        }
        public static QueueClient GetServiceBusQueueClient(MessagingFactory messagingFactory, string queueName, ReceiveMode receiveMode = ReceiveMode.ReceiveAndDelete)
        {
            QueueClient client = messagingFactory.CreateQueueClient(queueName, receiveMode);

            return(client);
        }
        public async Task SetupAsync(Type[] allMessageTypes, Type[] recievingMessageTypes)
        {
            _logger.Debug("Starting the setup of AzureServicebusTransport...");

            _namespaceManager = NamespaceManager.CreateFromConnectionString(_configuration.GetConnectionString());
            _messagingFactory = MessagingFactory.CreateFromConnectionString(_configuration.GetConnectionString());

            _messageTypes = allMessageTypes;

            var sendCommandTypes = _messageTypes
                .Where(t => typeof (IBusCommand)
                    .IsAssignableFrom(t));

            var sendEventTypes = _messageTypes
                .Where(t => typeof(IBusEvent)
                    .IsAssignableFrom(t));

            var recieveCommandTypes = recievingMessageTypes
                .Where(t => typeof(IBusCommand)
                    .IsAssignableFrom(t));

            var recieveEventTypes = recievingMessageTypes
                .Where(t => typeof(IBusEvent)
                    .IsAssignableFrom(t));

            if (_configuration.GetEnableTopicAndQueueCreation())
            {
                foreach (var type in sendCommandTypes)
                {
                    var path = PathFactory.QueuePathFor(type);
                    if (!_namespaceManager.QueueExists(path))
                        await _namespaceManager.CreateQueueAsync(path);

                    var client = _messagingFactory.CreateQueueClient(path);
                    client.PrefetchCount = 10; //todo;: in config?

                    var eventDrivenMessagingOptions = new OnMessageOptions
                    {
                        AutoComplete = true, //todo: in config?
                        MaxConcurrentCalls = 10 //todo: in config?
                    };
                    eventDrivenMessagingOptions.ExceptionReceived += OnExceptionReceived;
                    client.OnMessageAsync(OnMessageRecieved, eventDrivenMessagingOptions);

                    if (!_queues.TryAdd(type, client))
                    {
                        _logger.Error("Could not add the queue with type: {0}", type.FullName);
                    }
                }
                foreach (var type in sendEventTypes)
                {
                    var path = PathFactory.TopicPathFor(type);
                    if (!_namespaceManager.TopicExists(path))
                        _namespaceManager.CreateTopic(path);

                    var client = _messagingFactory.CreateTopicClient(path);

                    if (!_topics.TryAdd(type, client))
                    {
                        _logger.Error("Could not add the topic with type: {0}", type.FullName);
                    }


                }
            }

            _logger.Debug("Setup of AzureServicebusTransport completed!");

            throw new NotImplementedException();
        }
예제 #11
0
 protected override void OnStart()
 {
     trackingQueueClient = messagingFactory.CreateQueueClient(trackingEntityName);
 }
예제 #12
0
        static void Main(string[] args)
        {
            GetUserCredentials();

            MessagingFactory factory = null;

            try
            {
                //*****************************************************************************************************
                //                                   Management Operations
                //*****************************************************************************************************
                NamespaceManager namespaceClient = NamespaceManager.CreateFromConnectionString(ServiceBusConnectionString);
                if (namespaceClient == null)
                {
                    Console.WriteLine("\nUnexpected Error: NamespaceManager is NULL");
                    return;
                }

                //Retreive details of the queue
                QueueDescription queueDescription = namespaceClient.GetQueue(AsyncReceiver.QueueName);
                if (queueDescription == null)
                {
                    Console.WriteLine("\nUnexpected Error: QueueDescription is NULL");
                    return;
                }

                //*****************************************************************************************************
                //                                   Runtime Operations
                //*****************************************************************************************************
                factory = MessagingFactory.CreateFromConnectionString(ServiceBusConnectionString);

                QueueClient myQueueClient = factory.CreateQueueClient(AsyncReceiver.QueueName, ReceiveMode.PeekLock);

                //*****************************************************************************************************
                //                                   Receiving messages from a Queue
                //*****************************************************************************************************

                Console.WriteLine("\nReceiving messages from Queue '{0}'...", AsyncReceiver.QueueName);

                // Retreive the number of messages currently in the Queue
                long messageCount = queueDescription.MessageCount;

                // Initiate the Asynchronous Receive using BeginReceive() call to receive the messages.
                for (long count = 0; count < messageCount; count++)
                {
                    myQueueClient.BeginReceive(TimeSpan.FromSeconds(30), OnMessageReceive, myQueueClient);
                }

                Console.WriteLine("\nAfter all messages are received, press ENTER to exit.");
                Console.ReadLine();
            }
            catch (Exception e)
            {
                Console.WriteLine("Unexpected exception {0}", e.ToString());
                throw;
            }
            finally
            {
                // Closing factory close all entities created from the factory.
                if (factory != null)
                {
                    factory.Close();
                }
            }
        }
 static QueueClient CreateQueueClient(Uri serviceUri, TokenProvider credentials, out MessagingFactory factory)
 {
     factory = MessagingFactory.Create(serviceUri, credentials);
     return factory.CreateQueueClient(QueueName);
 }
예제 #14
0
        private static void Main(string[] args)
        {
            ServerFQDN = System.Net.Dns.GetHostEntry(string.Empty).HostName;

            ServiceBusConnectionStringBuilder connBuilder =
                new ServiceBusConnectionStringBuilder
            {
                ManagementPort = HttpPort,
                RuntimePort    = TcpPort
            };

            connBuilder.Endpoints.Add(new UriBuilder {
                Scheme = "sb", Host = ServerFQDN, Path = ServiceNamespace
            }.Uri);
            connBuilder.StsEndpoints.Add(new UriBuilder
            {
                Scheme = "https",
                Host   = ServerFQDN,
                Port   = HttpPort,
                Path   = ServiceNamespace
            }.Uri);

            MessagingFactory messageFactory   = MessagingFactory.CreateFromConnectionString(connBuilder.ToString());
            NamespaceManager namespaceManager = NamespaceManager.CreateFromConnectionString(connBuilder.ToString());

            if (namespaceManager == null)
            {
                Console.WriteLine("\nUnepected Error");
                return;
            }

            string queueName = "ServiceBusQueueSample";

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

            namespaceManager.CreateQueue(queueName);

            QueueClient myQueueClient = messageFactory.CreateQueueClient(queueName);

            try
            {
                BrokeredMessage sendMessage = new BrokeredMessage("Hello World!");
                myQueueClient.Send(sendMessage);

                //Receive the message from the queue
                BrokeredMessage receivedMessage = myQueueClient.Receive(TimeSpan.FromSeconds(5));

                if (receivedMessage != null)
                {
                    Console.WriteLine(string.Format($"Message received:{receivedMessage.GetBody<string>()}"));
                    receivedMessage.Complete();
                }
            }
            catch (Exception e)
            {
                Console.WriteLine($"Unexpected exception {e}");
                throw;
            }
            finally
            {
                if (messageFactory != null)
                {
                    messageFactory.Close();
                }
                Console.WriteLine("Press ENTER to clean up and exit.");
                Console.ReadLine();
            }
        }
예제 #15
0
 public QueueDeadletterEndpoint(NamespaceManager namespaceManager, MessagingFactory clientFactory, string name) : base(namespaceManager, clientFactory, name)
 {
     Client = clientFactory.CreateQueueClient(name + "/$DeadletterQueue");
 }
예제 #16
0
        static void Main(string[] args)
        {
            Uri             serviceUri = ServiceBusEnvironment.CreateServiceUri("sb", "ndservice", String.Empty);
            TokenProvider   credentials = TokenProvider.CreateSharedAccessSignatureTokenProvider("RootManageSharedAcc essKey", "2geKYuIEGyHKeN4DiuGFDdHBe4Xc7vsVROJ2TVfe4hc="); MessagingFactory factory = MessagingFactory.Create(serviceUri, credentials); QueueClient client = factory.CreateQueueClient("messaging");
            BrokeredMessage msg = client.Receive();

            Console.WriteLine("TID:" + msg.Properties["Tid"] + "\t Tval:" + msg.Properties["Tval"]);
            Console.Read();
            msg.Complete();
        }
 public AzureServiceBusChannel(string queue)
 {
     _queue       = queue;
     _factory     = MessagingFactory.Create();
     _queueClient = _factory.CreateQueueClient(_queue);
 }
        static void Main(string[] args)
        {
            GetUserCredentials();
            TokenProvider credentials =
                TokenProvider.CreateSharedSecretTokenProvider(IssuerName, IssuerKey);
            Uri serviceUri = ServiceBusEnvironment.CreateServiceUri("sb", ServiceNamespace, string.Empty);

            //*****************************************************************************************************
            //                                   Management Operations
            //*****************************************************************************************************
            NamespaceManager namespaceClient = new NamespaceManager(serviceUri, credentials);

            Console.WriteLine("\nCreating Queue 'IssueTrackingQueue'...");

            // Delete if exists
            if (namespaceClient.QueueExists(queueName))
            {
                namespaceClient.DeleteQueue(queueName);
            }

            namespaceClient.CreateQueue(queueName);

            //*****************************************************************************************************
            //                                   Runtime Operations
            //*****************************************************************************************************
            MessagingFactory factory = MessagingFactory.Create(serviceUri, credentials);

            try
            {
                QueueClient myQueueClient = factory.CreateQueueClient(queueName);

                //*****************************************************************************************************
                //                                   Sending messages to a Queue
                //*****************************************************************************************************
                List <BrokeredMessage> messageList = new List <BrokeredMessage>();
                messageList.Add(CreateIssueMessage("1", "Package lost"));
                messageList.Add(CreateIssueMessage("2", "Package damaged"));
                messageList.Add(CreateIssueMessage("3", "Package defective"));

                Console.WriteLine("\nSending messages to queue...");

                foreach (BrokeredMessage message in messageList)
                {
                    myQueueClient.Send(message);
                    Console.WriteLine(
                        string.Format("Message sent: Id = {0}, Body = {1}", message.MessageId, message.GetBody <string>()));
                }

                Console.WriteLine("\nFinished sending messages, press ENTER to clean up and exit.");
                Console.ReadLine();

                // Closing factory close all entities created from the factory.
                factory.Close();
            }
            catch (Exception)
            {
                factory.Abort();
                throw;
            }

            namespaceClient.DeleteQueue(queueName);
        }
예제 #19
0
        static void Main(string[] args)
        {
            Console.WriteLine("Tag Reader Console");



            // Create the MessagingFactory
            MessagingFactory factory = MessagingFactory.CreateFromConnectionString(AccountDetails.ConnectionString); //MessagingFactory.Create(serviceBusUri, credentials);

            // Use the MessagingFactory to create a queue client for the 
            // specified queue.
            QueueClient queueClient = factory.CreateQueueClient(AccountDetails.QueueName);

            // Create a sample order
            RfidTag[] orderItems = new RfidTag[]
            {
                new RfidTag() { Product = "Ball", Price = 4.99 },
                new RfidTag() { Product = "Whistle", Price = 1.95 },
                new RfidTag() { Product = "Bat", Price = 12.99 },
                new RfidTag() { Product = "Bat", Price = 12.99 },
                new RfidTag() { Product = "Gloves", Price = 7.99 },
                new RfidTag() { Product = "Gloves", Price = 7.99 },
                new RfidTag() { Product = "Cap", Price = 9.99 },
                new RfidTag() { Product = "Cap", Price = 9.99 },
                new RfidTag() { Product = "Shirt", Price = 14.99 },
                new RfidTag() { Product = "Shirt", Price = 14.99 },
            };

            // Display the order data.
            Console.ForegroundColor = ConsoleColor.Green;
            Console.WriteLine("Order contains {0} items.", orderItems.Length);
            Console.ForegroundColor = ConsoleColor.Yellow;

            double orderTotal = 0.0;
            foreach (RfidTag tag in orderItems)
            {
                Console.WriteLine("{0} - ${1}", tag.Product, tag.Price);
                orderTotal += tag.Price;
            }
            Console.ForegroundColor = ConsoleColor.Green;
            Console.WriteLine("Order value = ${0}.", orderTotal);
            Console.WriteLine();
            Console.ResetColor();

            Console.WriteLine("Press enter to scan...");
            Console.ReadLine();

            // Send the order with random duplicate tag reads
            int sentCount = 0;
            int position = 0;
            Random random = new Random(DateTime.Now.Millisecond);

            Console.WriteLine("Reading tags...");
            Console.WriteLine();
            Console.ForegroundColor = ConsoleColor.Cyan;

            var sessionId = Guid.NewGuid().ToString();
          
            while (position < 10)
            {
                RfidTag rfidTag = orderItems[position];
                
                // Create a new brokered message from the order item RFID tag.
                BrokeredMessage tagRead = new BrokeredMessage(rfidTag);

                // Comment in to set message id.
                tagRead.MessageId = rfidTag.TagId;

                // Comment in to set session id.
                tagRead.SessionId = sessionId;


                // Send the message
                queueClient.Send(tagRead);
                //Console.WriteLine("Sent: {0}", orderItems[position].Product);
                Console.WriteLine("Sent: {0} - MessageId: {1}", orderItems[position].Product, tagRead.MessageId);

                // Randomly cause a duplicate message to be sent.
                if (random.NextDouble() > 0.4) position++;
                sentCount++;

                Thread.Sleep(100);
            }

            Console.ForegroundColor = ConsoleColor.Green;
            Console.WriteLine("{0} total tag reads.", sentCount);
            Console.WriteLine();
            Console.ResetColor();
            Console.ReadLine();

        }
 public QueueClient Create(string description, MessagingFactory factory)
 {
     var client = factory.CreateQueueClient(description, ShouldRetry() ? ReceiveMode.PeekLock : ReceiveMode.ReceiveAndDelete);
     client.PrefetchCount = BatchSize;
     return client;
 }
예제 #21
0
        static void Main(string[] args)
        {
            GetUserCredentials();
            MessagingFactory factory = null;

            try
            {
                //*****************************************************************************************************
                //                                   Management Operations
                //*****************************************************************************************************
                NamespaceManager namespaceClient = NamespaceManager.CreateFromConnectionString(ServiceBusConnectionString);

                Console.WriteLine("\nCreating Queue '{0}'...", QueueName);

                // Delete if exists
                if (namespaceClient.QueueExists(AsyncSender.QueueName))
                {
                    namespaceClient.DeleteQueue(AsyncSender.QueueName);
                }

                namespaceClient.CreateQueue(QueueName);

                //*****************************************************************************************************
                //                                   Runtime Operations
                //*****************************************************************************************************
                factory = MessagingFactory.CreateFromConnectionString(ServiceBusConnectionString);

                QueueClient myQueueClient = factory.CreateQueueClient(AsyncSender.QueueName);

                //*****************************************************************************************************
                //                                   Sending messages to a Queue
                //*****************************************************************************************************
                List <BrokeredMessage> messageList = new List <BrokeredMessage>();

                messageList.Add(CreateIssueMessage("1", "First Package"));
                messageList.Add(CreateIssueMessage("2", "Second Package"));
                messageList.Add(CreateIssueMessage("3", "Third Package"));

                Console.WriteLine("\nSending messages to Queue...");

                foreach (BrokeredMessage message in messageList)
                {
                    // Initiate the asynchronous send
                    myQueueClient.BeginSend(message, OnSendComplete, new Tuple <QueueClient, string>(myQueueClient, message.MessageId));
                    Console.WriteLine(string.Format("Asynchronous Message Send Begin: Id = {0}, Body = {1}", message.MessageId, message.GetBody <string>()));
                }

                Console.WriteLine("\nAfter all messages are sent, press ENTER to clean up and exit.\n");
                Console.ReadLine();
            }
            catch (Exception e)
            {
                Console.WriteLine("Unexpected exception {0}", e.ToString());
                throw;
            }
            finally
            {
                // Closing factory close all entities created from the factory.
                if (factory != null)
                {
                    factory.Close();
                }
            }
        }
예제 #22
0
        static void Main(string[] args)
        {
            Console.WriteLine("Checkout Console");



            // Create the NamespaceManager
            NamespaceManager namespaceMgr =
                //new NamespaceManager(serviceBusUri, credentials);
                NamespaceManager.CreateFromConnectionString(AccountDetails.ConnectionString);

            // Create the MessagingFactory
            MessagingFactory factory =
                //MessagingFactory.Create(serviceBusUri, credentials);
                MessagingFactory.CreateFromConnectionString(AccountDetails.ConnectionString);

            // Delete the queue if it exists.
            if (namespaceMgr.QueueExists(AccountDetails.QueueName))
            {
                namespaceMgr.DeleteQueue(AccountDetails.QueueName);
            }



            // Create a description for the queue.
            QueueDescription rfidCheckoutQueueDescription =
                new QueueDescription(AccountDetails.QueueName)
            {
                // Comment in to require duplicate detection
                RequiresDuplicateDetection          = true,
                DuplicateDetectionHistoryTimeWindow = TimeSpan.FromMinutes(10),

                // Comment in to require sessions
                RequiresSession = true
            };



            // Create a queue based on the queue description.
            namespaceMgr.CreateQueue(rfidCheckoutQueueDescription);

            // Use the MessagingFactory to create a queue client for the
            // specified queue.
            QueueClient queueClient = factory.CreateQueueClient(AccountDetails.QueueName);

            Console.WriteLine("Receiving tag read messages...");
            while (true)
            {
                int    receivedCount = 0;
                double billTotal     = 0.0;

                // Comment in to use a session receiver
                Console.ForegroundColor = ConsoleColor.Cyan;
                var messageSession = queueClient.AcceptMessageSession();
                Console.WriteLine("Accepted session: " + messageSession.SessionId);


                Console.ForegroundColor = ConsoleColor.Yellow;


                while (true)
                {
                    // Receive a tag read message.

                    // Swap comments to use a session receiver
                    //var receivedTagRead = queueClient.Receive(TimeSpan.FromSeconds(5));
                    var receivedTagRead = messageSession.Receive(TimeSpan.FromSeconds(5));

                    if (receivedTagRead != null)
                    {
                        // Process the message.
                        RfidTag tag = receivedTagRead.GetBody <RfidTag>();
                        Console.WriteLine("Bill for {0}", tag.Product);
                        receivedCount++;
                        billTotal += tag.Price;

                        // Mark the message as complete
                        receivedTagRead.Complete();
                    }
                    else
                    {
                        break;
                    }
                }

                if (receivedCount > 0)
                {
                    // Bill the customer.
                    Console.ForegroundColor = ConsoleColor.Green;
                    Console.WriteLine
                        ("Bill customer ${0} for {1} items.", billTotal, receivedCount);
                    Console.WriteLine();
                    Console.ResetColor();
                }
            }
        }
 protected override void OnStart()
 {
     workerQueueClient = messagingFactory.CreateQueueClient(workerQueueName);
     deciderSender     = messagingFactory.CreateMessageSender(orchestratorQueueName, workerQueueName);
 }
예제 #24
0
 public static QueueClient CreateQueueClient(MessagingFactory queueClientFactory, string entityPath)
 {
     return(queueClientFactory.CreateQueueClient(entityPath));
 }
예제 #25
0
 public QueueEndpoint(NamespaceManager namespaceManager, MessagingFactory clientFactory, string name) : base(namespaceManager, name)
 {
     Client = clientFactory.CreateQueueClient(name);
 }
예제 #26
0
        static void Test(NamespaceManager namespaceManager, MessagingFactory messageFactory)
        {
            var q = namespaceManager.GetQueue(QueueName);
            var t = namespaceManager.GetTopic(TopicName);

            var gf = namespaceManager.GetTopics();

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


            QueueClient myQueueClient = messageFactory.CreateQueueClient(QueueName);

            try
            {
                BrokeredMessage sendMessage = new BrokeredMessage("Hello World !");
                myQueueClient.Send(sendMessage);

                //// Receive the message from the queue
                //BrokeredMessage receivedMessage = myQueueClient.Receive(TimeSpan.FromSeconds(5));

                //if (receivedMessage != null)
                //{
                //    Console.WriteLine(string.Format("Message received: {0}", receivedMessage.GetBody<string>()));
                //    receivedMessage.Complete();
                //}

                //Check for messages that are older than they should be
                int      minutesOld = 1;
                DateTime oldest     = DateTime.UtcNow.AddMinutes(-minutesOld);

                int oldMessageCount             = 0;
                List <BrokeredMessage> messages = new List <BrokeredMessage>(myQueueClient.PeekBatch(1000));

                foreach (BrokeredMessage b in messages)
                {
                    if (b.EnqueuedTimeUtc < oldest)
                    {
                        oldMessageCount++;
                    }
                }

                BrokeredMessage bd = myQueueClient.Receive();
                bd.DeadLetter();

                //check for dead letter messages
                QueueClient dlClient = messageFactory.CreateQueueClient(QueueClient.FormatDeadLetterPath(QueueName));

                List <BrokeredMessage> dlMessages = new List <BrokeredMessage>(dlClient.PeekBatch(1000));
                int i = dlMessages.Count;

                //b.DeadLetter();


                if (!namespaceManager.TopicExists(TopicName))
                {
                    namespaceManager.CreateTopic(TopicName);
                }


                if (!namespaceManager.SubscriptionExists(TopicName, SubName))
                {
                    namespaceManager.CreateSubscription(TopicName, SubName);
                }



                TopicClient topicClient = messageFactory.CreateTopicClient(TopicName);

                topicClient.Send(new BrokeredMessage("Message"));

                SubscriptionDescription s = namespaceManager.GetSubscription(TopicName, SubName);

                SubscriptionClient subClient = messageFactory.CreateSubscriptionClient(TopicName, SubName);

                List <BrokeredMessage> subMessages = new List <BrokeredMessage>(subClient.PeekBatch(1000));
                BrokeredMessage        bms         = subClient.Receive();
                bms.DeadLetter();

                foreach (BrokeredMessage b in messages)
                {
                    if (b.EnqueuedTimeUtc < oldest)
                    {
                        oldMessageCount++;
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("Unexpected exception {0}", e.ToString());
                throw;
            }
            finally
            {
                if (messageFactory != null)
                {
                    messageFactory.Close();
                }
            }
            //Send Message
        }
예제 #27
0
        static void Setup()
        {
            Console.WriteLine("Reading configuration...");

            _serviceNamespace = ConfigurationManager.AppSettings["ServiceBusNamespace"];
            Console.WriteLine(string.Format("* Service bus namespace is \"{0}\"", _serviceNamespace));

            _issuerName = ConfigurationManager.AppSettings["Issuer"];
            Console.WriteLine(string.Format("* Issuer \"{0}\"", _issuerName));

            _issuerKey = ConfigurationManager.AppSettings["Key"];
            Console.WriteLine(string.Format("* Key \"{0}\"", _issuerKey));

            _inputQueue = ConfigurationManager.AppSettings["InputQueueIdentifier"];
            Console.WriteLine(string.Format("* Input queue identifier \"{0}\" \r\n", _inputQueue));

            //Create queue client for posting to the input queue
            var credentials = TokenProvider.CreateSharedSecretTokenProvider(_issuerName, _issuerKey);
            _factory = MessagingFactory.Create(ServiceBusEnvironment.CreateServiceUri("sb", _serviceNamespace, string.Empty), credentials);
            _inputQueueClient = _factory.CreateQueueClient(_inputQueue);
        }