2008-10-30 8 views
2

팀의 새 프로젝트에 대해 MSMQ를 사용하여 조사 중이지만 System.Transactions.TransactionScope 내에서 MSMQ 메시지를 보내고 SQL 명령을 실행할 수 있는지 확인하고 함께 커밋하거나 롤백하도록해야합니다. 코드 예제에서 "예"라고하는 신뢰할 수있는 온라인 소스를 찾을 수 없습니다.SQL 명령을 실행하고 TransactionScope에서 MSMQ 메시지를 보낼 수 있습니까?

하나의 메시지를 하나의 큐에 보내고 하나의 데이터베이스에 일부 레코드를 삽입해야하지만 함께 성공하거나 실패해야합니다.

EDIT :이 테스트가 작동하는지 여부를 실제로 확인할 수 없었습니다.이 작업은 신속하게 처리되었지만 모든 설명서에는 TransactionScope가 동일한 인스턴스에서 MSMQ 메시지와 SQL 명령을 캡처한다고 나와 있습니다.

+0

나는 답을 모른다. 그러나 확실하게 이것을 검증하기 위해 일부 단위 테스트를 노크하는 것은 그리 어렵지 않을 것이다. –

답변

3

개인적 경험으로 볼 때 TransactionScope는 SQL과 잘 작동한다는 것을 알고 있습니다. MSMQ에 익숙하지 않지만 신속한 답변을 위해 Google search은 정상적으로 작동하는 것처럼 보이는 몇 가지 예 (일반적으로 포럼 토론)를 보여줍니다. System.Messaging.MessageQueue 개체에는 .Transactional 속성이 있고 .Send() 메서드에는 MessageQueueTransaction 매개 변수가 있으므로 모든 메시지가 함께 작동해야한다고 말하고 싶습니다.

using (TransactionScope scope = new TransactionScope()) 
{ 
    using (MessageQueue myQueue = new MessageQueue(QUEUE_NAME)) 
    { 
    if (myQueue.Transactional) 
     { 
     myQueue.Send(TicketTextBox.Text, "Message", MessageQueueTransactionType.Automatic); 
     } 
    } 
scope.Complete(); 
} 

는 그냥 .Complete 전에 TransactionScope에 (의 사용() 블록 내부에 SQL 코드를 던져() : 여기

검색의 포럼 중 하나에서 코드 예제 (나의 코드)입니다) 그리고 당신은 잘 가야합니까?

관련 문제