2단계: 첫 번째 프로그램 작성

첫 번째 프로그램 작성

  1. 솔루션 탐색기에서 Program.cs를 두 번 클릭하여 Visual Studio 편집기에서 엽니다. 다음 using 문을 파일을 맨 위에 추가하여 방금 만든 모델 및 Service Bus에 대한 네임스페이스를 포함합니다.

    using System;
    using Microsoft.ServiceBus;
    using Microsoft.ServiceBus.Messaging;
    
  2. 서버, 포트 및 서비스 네임스페이스 이름을 식별합니다. 값을 하드 코드하거나, 사용자에게 입력을 요청하거나, 구성 파일에서 읽어 이 작업을 수행할 수 있습니다. 다음 코드는 값을 하드 코드합니다.

    static string ServerFQDN;
    static int HttpPort = 9355;
    static int TcpPort = 9354;
    static string ServiceNamespace = "ServiceBusDefaultNamespace";
    
  3. Service Bus 연결 문자열을 작성합니다.

    ServiceBusConnectionStringBuilder connBuilder = new ServiceBusConnectionStringBuilder();
    connBuilder.ManagementPort = HttpPort;
    connBuilder.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);
    
  4. NamespaceManager 인스턴스(관리 작업용) 및 MessagingFactory 인스턴스(메시지 보내기/받기용)를 만듭니다.

    MessagingFactory messageFactory = MessagingFactory.CreateFromConnectionString(connBuilder.ToString());
    NamespaceManager namespaceManager = NamespaceManager.CreateFromConnectionString(connBuilder.ToString());
    
  5. 새로 만든 URI 및 토큰을 사용하여 새 큐를 만듭니다.

    const string QueueName = "ServiceBusQueueSample";
    
    if (namespaceManager == null)
    {
        Console.WriteLine("\nUnexpected Error: NamespaceManager is NULL");
        return;
    }
    
    if (namespaceManager.QueueExists(QueueName))
    {
        namespaceManager.DeleteQueue(QueueName);
    }
    namespaceManager.CreateQueue(QueueName);
    
  6. 큐와 메시지를 주고받을 큐 클라이언트를 만듭니다.

    QueueClient myQueueClient = messageFactory.CreateQueueClient(QueueName);
    
  7. 간단한 조정된 메시지를 만들어 큐에 보냅니다.

    BrokeredMessage sendMessage = new BrokeredMessage("Hello World !");
    myQueueClient.Send(sendMessage);
    
  8. 큐에서 메시지를 받습니다.

    BrokeredMessage receivedMessage = myQueueClient.Receive(TimeSpan.FromSeconds(5));
    
    if (receivedMessage != null)
    {
        Console.WriteLine(string.Format("Message received: Body = {0}", receivedMessage.GetBody<string>()));
        receivedMessage.Complete();
    }
    
  9. Service Bus에 대한 연결을 닫습니다.

    if (messageFactory != null)                    
    {
        messageFactory.Close();
    }
    

다음은 위 단계를 수행한 후에 표시되는 전체 Program.cs 파일입니다.

namespace Microsoft.Samples.QueuesOnPrem
{
    using System;
    using Microsoft.ServiceBus;
    using Microsoft.ServiceBus.Messaging;

    public class Sender
    {
        static string ServerFQDN;
        static int HttpPort = 9355;
        static int TcpPort = 9354;
        static string ServiceNamespace = "ServiceBusDefaultNamespace";


        static void Main(string[] args)
        {
            ServerFQDN = System.Net.Dns.GetHostEntry(string.Empty).HostName;

            ServiceBusConnectionStringBuilder connBuilder = new ServiceBusConnectionStringBuilder();
            connBuilder.ManagementPort = HttpPort;
            connBuilder.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("\nUnexpected 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: {0}", receivedMessage.GetBody<string>()));
                    receivedMessage.Complete();
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("Unexpected exception {0}", e.ToString());
                throw;
            }
            finally
            {                
                if (messageFactory != null)
                    messageFactory.Close();
            }
            Console.WriteLine("Press  ENTER to clean up and exit.");
            Console.ReadLine();
        }
    }
}

빌드 날짜:

2013-07-25