我写了这段代码,它能够正常工作,但是让我开始思考如何使用MSMQ:
我应该使用“using”语句来获取消息队列吗?使用using语句可以在我完成操作后处理掉队列,但我什么时候算完成了呢?我应该保存我的MessageQueue对象以供重复使用。比如说,在一个ASP.Net应用程序中,我想从同一个操作发送3条信息到同一个队列中。是保存对象并重复使用还是像现在这样创建并处理?
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();
}
}
}
}