다음을 통해 공유


연습: 큐 만들기 및 메시지 작업

업데이트: 2007년 11월

이 항목의 단계에서는 MessageQueue 구성 요소를 사용하여 메시지 큐를 만드는 방법을 보여 줍니다. 이 구성 요소를 사용하여 메시지 큐로 메시지를 보내거나 메시지 큐에서 메시지를 검색합니다. 메시지에서는 도움말 요청을 기록합니다.

참고:

서버 탐색기에서 큐 정보를 보거나 프로그래밍 방식으로 큐에 액세스하려면 클라이언트 컴퓨터에 메시지 큐 Windows 구성 요소를 설치해야 합니다. 이 서비스를 추가하려면 제어판에서 프로그램 추가/제거를 사용합니다.

참고:

다음 지침처럼 컴퓨터에서 Visual Studio 사용자 인터페이스 요소 일부에 대한 이름이나 위치를 다르게 표시할 수 있습니다. 이러한 요소는 사용하는 Visual Studio 버전 및 설정에 따라 결정됩니다. 자세한 내용은 Visual Studio 설정을 참조하십시오.

컴퓨터에 메시지 큐를 만들려면

  1. 파일 메뉴에서 새로 만들기를 가리킨 다음 프로젝트를 클릭합니다.

  2. 새 프로젝트 대화 상자에서 Visual Basic 또는 Visual C#Windows 응용 프로그램을 만듭니다. 이름을 MessageQ로 지정합니다.

  3. 서버 탐색기를 엽니다. 자세한 내용은 방법: 서버 탐색기/데이터베이스 탐색기 액세스 및 초기화를 참조하십시오.

  4. 서버 노드를 확장합니다.

  5. 로컬 서버의 노드를 확장합니다. 로컬 서버의 노드는 컴퓨터 이름으로 식별합니다.

  6. 메시지 큐 노드를 확장합니다.

  7. 개인 큐를 마우스 오른쪽 단추로 클릭한 다음 큐 만들기를 클릭합니다.

  8. 큐 이름에 HelpRequest라고 입력합니다. 트랜잭션 큐 만들기를 선택하지 마십시오.

  9. HelpRequest라는 새 개인 큐가 만들어져 서버 탐색기에 나타납니다.

    참고:

    새로 만든 큐를 내 컴퓨터 아이콘을 통해 볼 수도 있습니다. 바탕 화면의 내 컴퓨터 아이콘을 마우스 오른쪽 단추로 클릭한 다음 관리를 클릭합니다. 서비스 및 응용 프로그램 노드를 확장합니다. 메시지 큐 노드를 확장하여 개인 큐 폴더를 선택합니다. 큐 목록에 새 큐가 표시됩니다.

메시지 큐에 대한 MessageQueue 구성 요소를 추가하려면

  1. 서버 탐색기에서 HelpRequest 큐를 폼으로 끌어 옵니다. HelpRequest 큐에 대해 구성된 새 MessageQueue 구성 요소가 프로젝트에 추가됩니다.

    MessageQueue 구성 요소는 이전 단원에서 만든 HelpRequest 큐에 포함된 메시지에 프로그래밍 방식으로 액세스하는 데 사용합니다.

  2. MessageQueue 구성 요소의 (Name) 속성을 helpRequestQueue로 설정합니다.

  3. 속성 창에서 MessageReadPropertyFilter 노드를 확장합니다. Priority의 값을 true로 설정합니다. 그러면 큐에서 메시지를 검색할 때 메시지의 우선 순위가 검색됩니다.

    다음 단계에서 만드는 사용자 인터페이스를 사용하면 사용자가 도움말 요청을 위한 텍스트를 입력하고 메시지의 우선 순위를 설정할 수 있습니다. 사용자는 보내기 단추를 클릭하여 요청을 큐로 전송합니다. DataGridView 컨트롤에는 큐의 내용이 표시됩니다. 사용자 인터페이스에는 모눈을 큐의 현재 내용으로 업데이트하는 단추와 큐를 비우는 단추도 있습니다.

사용자 인터페이스를 만들려면

  1. 도구 상자의 Windows Forms 탭에서 Form1에 다음 컨트롤을 추가합니다.

  2. 컨트롤의 속성을 다음과 같이 설정합니다.

    컨트롤

    속성

    새 값

    Label1

    Text

    이름

    Label2

    Text

    Message

    TextBox1

    Name

    txtName

     

    Text

    (비어 있음)

    TextBox2

    Name

    txtMessage

     

    Text

    (비어 있음)

     

    Multiline

    true

    Button1

    Name

    sendMessage

     

    Text

    Send message

    Button2

    Name

    refreshMessages

     

    Text

    Refresh message list

    Button3

    Name

    purgeMessages

     

    Text

    Purge message list

    CheckBox1

    Name

    highPriority

     

    Text

    High priority

    DataGridView1

    Name

    messageGrid

  3. 컨트롤을 순서대로 정렬합니다.

큐에 메시지를 보내려면

  1. 디자이너에서 sendMessage 단추를 두 번 클릭하여 코드 편집기에서 Click 이벤트 처리기를 만듭니다.

  2. Message 인스턴스를 만들어 큐로 보내고 메시지 표시를 업데이트하는 다음 코드를 메서드에 추가합니다. DisplayMessages 메서드는 다음 단계에서 작성합니다.

    Private Sub sendMessage_Click(ByVal sender As System.Object, _
       ByVal e As System.EventArgs) Handles sendMessage.Click
       Dim theMessage As System.Messaging.Message = _
          New System.Messaging.Message(Me.txtMessage.Text)
       theMessage.Label = Me.txtName.Text
       If highPriority.Checked Then
          theMessage.Priority = Messaging.MessagePriority.Highest
       Else
          theMessage.Priority = Messaging.MessagePriority.Normal
       End If
       helpRequestQueue.Send(theMessage)
       DisplayMessages()
    End Sub
    
    private void sendMessage_Click(object sender, System.EventArgs e)
    {
       System.Messaging.Message theMessage = 
          new System.Messaging.Message(txtMessage.Text);
       theMessage.Label = txtName.Text; 
       if (highPriority.Checked)
          theMessage.Priority = System.Messaging.MessagePriority.Highest;
       else
          theMessage.Priority = System.Messaging.MessagePriority.Normal;
       helpRequestQueue.Send(theMessage);
       DisplayMessages();
    }
    
  3. 프로젝트에 System.Data에 대한 참조를 추가합니다. System.Data에 대해 Imports 문(.NET 네임스페이스 및 형식)(Visual Basic) 또는 using(C# 참조) 문을 추가합니다. 자세한 내용은 참조 관리방법: Visual Studio에서 참조 추가 또는 제거(Visual Basic)를 참조하십시오.

  4. DataGridView 컨트롤에 큐의 내용을 표시하는 메서드를 추가합니다. 이 메서드에서는 MessageQueue.GetAllMessages 메서드를 사용하여 큐에서 모든 메시지를 검색합니다. 선택한 큐 속성은 DataGridView 컨트롤의 데이터 소스로 사용되는 DataTable 개체에 추가됩니다. 메시지의 텍스트를 검색하려면 메시지에 대한 포맷터를 만들어야 합니다.

    Private Sub DisplayMessages()
       ' Create a DataTable
       Dim messageTable As New DataTable()
       messageTable.Columns.Add("Name")
       messageTable.Columns.Add("Message")
       messageTable.Columns.Add("Priority")
       Dim messages() As System.Messaging.Message
       messages = helpRequestQueue.GetAllMessages()
       ' Need a formatter to get the text of the message body.
       Dim stringFormatter As System.Messaging.XmlMessageFormatter = _
          New System.Messaging.XmlMessageFormatter(New String() _
          {"System.String"})
       Dim index As Integer
       Dim am As System.Messaging.Message
       ' Add each message to the DataTable
       For index = 0 To messages.Length - 1
          messages(index).Formatter = stringFormatter
          am = messages(index)
          messageTable.Rows.Add(New String() _
             {am.Label, am.Body.ToString(), am.Priority.ToString()})
       Next
    
       messageGrid.DataSource = messageTable
    End Sub
    
    private void DisplayMessages()
    {
       DataTable messageTable = new DataTable();
       messageTable.Columns.Add("Name");
       messageTable.Columns.Add("Message");
       messageTable.Columns.Add("Priority");
       System.Messaging.Message[] messages;
       messages = helpRequestQueue.GetAllMessages();
       System.Messaging.XmlMessageFormatter stringFormatter;
       stringFormatter = new System.Messaging.XmlMessageFormatter(
          new string[] {"System.String"});
       for (int index = 0; index < messages.Length; index++) 
       {
          messages[index].Formatter = stringFormatter;
          messageTable.Rows.Add(new string[] {
             messages[index].Label,
             messages[index].Body.ToString(),
             messages[index].Priority.ToString() });
       }
       messageGrid.DataSource = messageTable;
    

    }

큐의 내용을 표시하려면

  1. 디자이너에서 refreshMessage 단추를 두 번 클릭하여 코드 편집기에서 Click 이벤트 처리기를 만듭니다.

  2. Click 이벤트 처리기에서 DisplayMessages 메서드를 호출합니다.

    Private Sub refreshMessages_Click(ByVal sender As System.Object, _
       ByVal e As System.EventArgs) Handles refreshMessages.Click
       DisplayMessages()
    End Sub
    
    private void refreshMessages_Click(object sender, System.EventArgs e)
    {
       DisplayMessages();
    

    }

큐의 내용을 비우려면

  1. 디자이너에서 purgeMessage 단추를 두 번 클릭하여 코드 편집기에서 Click 이벤트 처리기를 만듭니다.

  2. helpRequestQueue의 Purge 메서드를 호출한 다음 DataGridView 컨트롤의 내용을 새로 고칩니다.

    Private Sub purgeMessages_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles purgeMessages.Click
       helpRequestQueue.Purge()
       DisplayMessages()
    End Sub
    
    private void purgeMessages_Click(object sender, System.EventArgs e)
    {
       helpRequestQueue.Purge();
       DisplayMessages();
    

    }

응용 프로그램을 테스트하려면

  1. F5 키를 눌러 응용 프로그램을 실행합니다.

  2. 이름과 간단한 메시지를 입력합니다.

  3. Send message를 클릭하여 메시지를 큐에 보내고 화면 표시를 업데이트합니다.

  4. Purge message list를 클릭하여 큐에 있는 메시지를 모두 삭제합니다. 그러면 메시지 목록이 비워집니다.

참고 항목

작업

방법: 큐 만들기

방법: MessageQueue 구성 요소 인스턴스 만들기

방법: 간단한 메시지 보내기

방법: 메시지 검색

개념

메시징 소개

기타 리소스

메시지 구성 요소 사용