작동하는이 코드를 작성했지만 MSMQ를 사용해야하는 방법을 생각하게되었습니다. 메시지 큐를 가져 오기 위해 "using"문을 사용해야합니까? Using 문을 사용하면 큐를 제거 할 때 처리 할 수 있지만 끝내면 언제 끝낼 수 있습니까? 다시 사용할 수 있도록 내 MessageQueue 개체를 저장해야합니까? 이것은 ASP.Net 응용 프로그램에 있으며 같은 작업에서 동일한 대기열에 3 개의 메시지를 보내려고합니다. 객체를 저장하고 재사용하거나 작성하여 처리하십시오.MSMQ는 어떻게 사용해야합니까?
using (MessageQueue msgQueue = new MessageQueue(this.queueName))
{
using (MessageQueueTransaction msgTx = new MessageQueueTransaction())
{
Message recoverableMessage = null;
msgTx.Begin();
try
{
recoverableMessage = new Message();
recoverableMessage.Body = message;
recoverableMessage.Formatter = new BinaryMessageFormatter(System.Runtime.Serialization.Formatters.FormatterAssemblyStyle.Simple, System.Runtime.Serialization.Formatters.FormatterTypeStyle.TypesAlways);
recoverableMessage.Recoverable = true;
msgQueue.Send(recoverableMessage, msgTx);
////this.msgQ.Send(recoverableMessage, msgTx); //whats up here??? this will teach me for taking time off. not sure whuc I shuold use
msgTx.Commit();
result = recoverableMessage.Id;
//recoverableMessage.Dispose();
}
catch (Exception)
{
msgTx.Abort();
////recoverableMessage.Dispose();
}
finally
{
if (recoverableMessage != null)
{
recoverableMessage.Dispose();
}
}
}
}
감사합니다. 제 질문은 MSMQ에 관한 것입니다. 지정된 이름의 서버에 단 하나의 대기열이 있으므로 대기열에 대한 참조를 유지하는 데 장점이 있는지 또는 단점인지 궁금합니다. 당연히 나는 두포의 밑에 무슨 일이 일어나는지 이해하지 않는다. 대기열에 대한 참조를 얻는 것이 더 비쌉니까? 아니면 참조를 유지하는 것이 더 비쌉니까? 여러 스레드가 대기열의 인스턴스를 가져 와서 대기열에 쓰려고 시도 할 때 동시성 문제가 발생할 수 있습니다. – Noel
@ 노르 - 내 대답 업데이트 –