다음 코드를 사용하여 메시지를 보냅니다.처리하는 동안 내 기능이 실패하면 System.MessageQueue (MSMQ) 메시지가 손실됩니까?
var transaction = new MessageQueueTransaction())
transaction.Begin();
var message = new Message
{
Body = myContent,
Recoverable = true
};
m_oMessageQueue.Send(message , myTransaction);
transaction.Commit();
그리고 BeginRecieve
및 ReceiveCompleted
이벤트 처리기를 사용하여 메시지를 수신합니다.
EndRecieve
를 호출하기 전에 내 이벤트 핸들러가 실패한 경우 메시지가 대기열에 남아 있고 후속 호출에서 수신 할 수 있어야합니까? 내가 보는 행동은 메시지가 영원히 사라 졌다는 것입니다. (또는 어쩌면 다시 사용할 수있게 될 시간 초과가 있습니까?)
업데이트 메시지를받는 코드는 다음과 같습니다.
var messageQueue = new MessageQueue(myPath);
messageQueue.ReceiveCompleted += messageQueue_ReceiveCompleted_ThrowException;
messageQueue.BeginReceive();
테스트 목적으로 messageQueue_ReceiveCompleted_ThrowException 이벤트 처리기에 예외가 발생합니다.
그런 다음 작동하는 이벤트 처리기로 위 코드를 반복하지만 호출되지 않습니다.
무엇 큐의 EnableConnectionCache로 설정 수신하여입니까? –
나는 그것을 아무 것도 설정하지 않았다, 그것은 무엇을위한 것인가? – tpower