/// <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); }
/// <summary> /// Send a transactional message. /// </summary> /// <param name="durableMessageSender"></param> private static void SendMessage(DurableMessageSender durableMessageSender, int senderId) { // Send a message inside a transaction scope. BrokeredMessage txMsg = CreateBrokeredMessage(senderId); Console.WriteLine("Sending message {0} within a transaction.", txMsg.Label); using (TransactionScope scope = new TransactionScope()) { durableMessageSender.Send(txMsg); scope.Complete(); } }