다음을 통해 공유


MessageQueue.Transactional 속성

정의

큐가 트랜잭션만 허용하는지 여부를 나타내는 값을 가져옵니다.

public:
 property bool Transactional { bool get(); };
[System.Messaging.MessagingDescription("MQ_Transactional")]
public bool Transactional { get; }
[<System.Messaging.MessagingDescription("MQ_Transactional")>]
member this.Transactional : bool
Public ReadOnly Property Transactional As Boolean

속성 값

큐가 트랜잭션의 일부로서 전달된 메시지만 허용하면 true이고, 그렇지 않으면 false입니다.

특성

예외

메시지 큐 메서드에 액세스하는 동안 오류가 발생한 경우

예제

다음 코드 예제에서는 메시지 큐의 Transactional 속성 값을 표시합니다.

// Display the value of the queue's Transactional property.
Console.WriteLine("MessageQueue.Transactional: {0}",
    queue.Transactional);

설명

트랜잭션 메시징은 여러 관련 메시지를 단일 트랜잭션으로 결합하는 것을 의미합니다. 트랜잭션의 일부로 메시지를 보내면 메시지가 순서대로 배달되고, 한 번만 배달되고, 대상 큐에서 성공적으로 검색됩니다.

큐가 트랜잭션인 경우 트랜잭션의 일부로 전송되는 메시지만 허용합니다. 그러나 트랜잭션 , 및 Abort 구문을 명시적으로 사용하지 않고 로컬 트랜잭션 큐에서 비 트랜잭션 BeginCommit메시지를 보내거나 받을 수 있습니다. 트랜잭션이 아닌 메시지를 트랜잭션 큐로 보내는 경우 이 구성 요소는 직접 형식 이름을 사용하여 원격 컴퓨터에서 큐를 참조하는 경우를 제외하고 단일 메시지 트랜잭션을 만듭니다. 이 경우 메시지를 보낼 때 트랜잭션 컨텍스트를 지정하지 않으면 해당 컨텍스트가 만들어지지 않고 메시지가 배달 못 한 편지 큐로 전송됩니다.

트랜잭션 큐에 트랜잭션이 아닌 메시지를 보내는 경우 예외 발생 시 메시지를 롤백할 수 없습니다.

MessageQueueTransaction 스레딩 아파트를 인식 하며 따라서 아파트 상태가 STA, 트랜잭션이 여러 스레드를 사용할 수 없습니다. 에 주 스레드의 상태를 설정 하는 Visual Basic STA이므로 적용 해야 합니다는 MTAThreadAttributeMain 서브루틴입니다. 그렇지 않으면 다른 스레드를 사용하여 트랜잭션 메시지를 전달할 때 MessageQueueException 예외가 throw됩니다. 적용 된 MTAThreadAttribute 다음 조각을 사용 하 여 합니다.

<System.MTAThreadAttribute>
 public sub Main()

다음 표에서는 이 속성을 다양한 작업 그룹 모드에서 사용할 수 있는지 여부를 보여 줍니다.

작업 그룹 모드 사용 가능
수집 Yes
로컬 컴퓨터 및 직접 형식 이름 Yes
원격 컴퓨터 No
원격 컴퓨터 및 직접 형식 이름 No

적용 대상

추가 정보