방법: 내부 트랜잭션에서 메시지 보내기

업데이트: 2007년 11월

내부 트랜잭션에서는 메시지 큐 리소스만을 사용하며, MessageQueueTransaction을 사용하여 메시지 큐 내에서 트랜잭션 전체를 관리합니다. 트랜잭션 프로세스를 처리하기 위한 MessageQueueTransaction의 인스턴스를 만들고 트랜잭션으로서 보낼 메시지에 이 인스턴스를 전달합니다.

트랜잭션 프로세스를 제어하는 메서드는 다음과 같습니다.

메서드

목적

Begin

하나 이상의 메시지와 작업으로 구성되는 트랜잭션의 시작을 나타냅니다.

Commit

트랜잭션에 포함된 모든 메시지 작업이 성공할 경우 트랜잭션을 커밋합니다.

Abort

오류 검사 도중 트랜잭션을 롤백합니다.

참고:

큐가 연결되어 있지 않거나 꽉 찬 경우, 트랜잭션이 실패한 것으로 간주되지 않습니다.

대부분의 경우 트랜잭션 코드는 Try...Catch...Finally 문(Visual Basic) 또는 try-catch-finally(C# 참조) 안에 넣어야 합니다. 이렇게 하면 문의 Try 부분에서 트랜잭션을 지정하고, Catch 문 안에서 오류가 있을 경우 Abort 메서드를 발생시킬 수 있습니다. 아래 코드에 이 방식의 예가 나와 있습니다.

내부 트랜잭션에서 메시지를 보내려면

  1. MessageQueue 구성 요소의 인스턴스를 만들고 Path 속성을 참조할 큐로 설정합니다. 자세한 내용은 방법: MessageQueue 구성 요소 인스턴스 만들기를 참조하십시오.

  2. 트랜잭션을 제어하기 위한 MessageQueueTransaction 클래스의 인스턴스를 만듭니다.

  3. MessageQueueTransaction 클래스의 Begin 메서드를 호출합니다.

  4. Begin을 호출한 후 보낼 메시지를 각각 정의합니다. 자세한 내용은 방법: MessageQueue 구성 요소 인스턴스 만들기를 참조하십시오.

  5. 마지막 메시지를 보낸 후 MessageQueueTransaction 인스턴스의 Commit을 호출하여 트랜잭션을 닫습니다.

  6. 트랜잭션에서 발생하는 오류를 처리하기 위해 전체 트랜잭션 작업을 Try...Catch 오류 검사 코드 안에 넣습니다.

  7. 오류가 발견되면 Abort 메서드를 호출하여 트랜잭션을 롤백합니다.

    코드는 다음과 비슷합니다.

    Dim transaction As New System.Messaging.MessageQueueTransaction
    transaction.Begin()
    Try
        MessageQueue1.Send("Message1", "Label1", transaction)
        MessageQueue1.Send("Message2", "Label2", transaction)
        MessageQueue1.Send("Message3", "Label3", transaction)
        transaction.Commit()
    Catch
        transaction.Abort()
    End Try
    
         System.Messaging.MessageQueueTransaction transaction =
                new System.Messaging.MessageQueueTransaction();
            transaction.Begin();
            try
            {
                messageQueue1.Send("Message1", "Label1", transaction);
                messageQueue1.Send("Message2", "Label2", transaction);
                messageQueue1.Send("Message3", "Label3", transaction);
                transaction.Commit();
            }
            catch
            {
                transaction.Abort();
            }
    

참고 항목

작업

방법: 트랜잭션 큐 만들기

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

개념

트랜잭션 메시지 처리

기타 리소스

메시지 보내기 및 Serialization