2단계: 첫 번째 프로그램 작성
첫 번째 프로그램 작성
솔루션 탐색기에서 Program.cs를 두 번 클릭하여 Visual Studio 편집기에서 엽니다. 다음
using
문을 파일을 맨 위에 추가하여 방금 만든 모델 및 Service Bus에 대한 네임스페이스를 포함합니다.using System; using Microsoft.ServiceBus; using Microsoft.ServiceBus.Messaging;
서버, 포트 및 서비스 네임스페이스 이름을 식별합니다. 값을 하드 코드하거나, 사용자에게 입력을 요청하거나, 구성 파일에서 읽어 이 작업을 수행할 수 있습니다. 다음 코드는 값을 하드 코드합니다.
static string ServerFQDN; static int HttpPort = 9355; static int TcpPort = 9354; static string ServiceNamespace = "ServiceBusDefaultNamespace";
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);
NamespaceManager 인스턴스(관리 작업용) 및 MessagingFactory 인스턴스(메시지 보내기/받기용)를 만듭니다.
MessagingFactory messageFactory = MessagingFactory.CreateFromConnectionString(connBuilder.ToString()); NamespaceManager namespaceManager = NamespaceManager.CreateFromConnectionString(connBuilder.ToString());
새로 만든 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);
큐와 메시지를 주고받을 큐 클라이언트를 만듭니다.
QueueClient myQueueClient = messageFactory.CreateQueueClient(QueueName);
간단한 조정된 메시지를 만들어 큐에 보냅니다.
BrokeredMessage sendMessage = new BrokeredMessage("Hello World !"); myQueueClient.Send(sendMessage);
큐에서 메시지를 받습니다.
BrokeredMessage receivedMessage = myQueueClient.Receive(TimeSpan.FromSeconds(5)); if (receivedMessage != null) { Console.WriteLine(string.Format("Message received: Body = {0}", receivedMessage.GetBody<string>())); receivedMessage.Complete(); }
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