방법: .NET Compact Framework에서 MSMQ 사용
업데이트: 2007년 11월
MSMQ(메시지 큐)를 사용하는 .NET Compact Framework 응용 프로그램을 만드는 작업은 .NET Framework에서 사용되는 프로세스와 비슷합니다. 그러나 Windows CE에서 .NET Compact Framework의 MSMQ에 설명된 모든 기능을 지원하는 것은 아닙니다.
다음 코드 예제에서는 동일한 장치에서 메시지 큐를 만들고 큐에 메시지를 보내고 큐에서 메시지를 받는 방법을 보여 줍니다. 여기서 네트워크 연결은 필요하지 않습니다. 메시지 큐를 위한 개체를 만드는 데 단순 클래스 Order가 사용됩니다.
이러한 예제에서는 장치에 메시지 큐가 설치되어 있다고 가정합니다. 메시지 큐 구성 요소를 구하는 방법에 대한 자세한 내용은 .NET Compact Framework의 MSMQ를 참조하십시오.
Order 클래스를 정의하려면
프로젝트에 다음 클래스를 추가합니다.
' This class represents an object that ' is sent to and received from the queue. Public Class Order Dim ID As Integer Dim DTime As DateTime Public Property orderID() As Integer Get Return Me.ID End Get Set(ByVal value As Integer) Me.ID = value End Set End Property Public Property orderTime() As DateTime Get Return Me.DTime End Get Set(ByVal value As DateTime) Me.DTime = value End Set End Property End Class
메시지 큐를 만들려면
폼에 다음 메서드를 추가합니다.
Private Sub CreateQueue() ' Determine whether the queue exists. If Not MessageQueue.Exists(QPath) Then Try ' Create the queue if it does not exist. myQ = MessageQueue.Create(QPath) MessageBox.Show("Queue Created") Catch ex As Exception MessageBox.Show(ex.Message) End Try Else MessageBox.Show("Queue Exists") End If End Sub
큐에 메시지를 보내려면
폼에 다음 메서드를 추가합니다.
Private Sub SendMessageToQueue() ' Create a new order and set values. Dim sendOrder As New Order() sendOrder.orderID = 23123 sendOrder.orderTime = DateTime.Now Try myQ.Send(sendOrder) MessageBox.Show("Message Sent") Catch ex As Exception MessageBox.Show(ex.Message) End Try End Sub
큐에서 메시지를 받으려면
폼에 다음 메서드를 추가합니다.
Private Sub ReceiveMessageFromQueue() ' Connect to the a queue on the device. myQ = New MessageQueue(QPath) ' Set the formatter to indicate the body contains an Order. Dim targetTypes() As Type targetTypes = New Type() {GetType(Order)} myQ.Formatter = New XmlMessageFormatter(targetTypes) Try ' Receive and format the message. Dim myMessage As Message = myQ.Receive() Dim myOrder As Order = CType(myMessage.Body, Order) ' Display message information. MessageBox.Show("Order ID: " & _ myOrder.orderID.ToString() & _ Chr(10) & "Sent: " & myOrder.orderTime.ToString()) Catch m As MessageQueueException ' Handle Message Queuing exceptions. MessageBox.Show(m.Message) Catch e As InvalidOperationException ' Handle invalid serialization format. MessageBox.Show(e.Message) End Try End Sub
메시지 큐를 테스트하려면
CreateQueue 및 SendMessageToQueue 메서드를 호출하며 보내기라는 레이블이 붙은 단추를 폼에 추가합니다.
ReceiveMessageFromQueue 메서드를 호출하며 받기라는 레이블이 붙은 단추를 폼에 추가합니다.
코드 컴파일
이 예제에는 다음과 같은 네임스페이스에 대한 참조가 필요합니다.