写入远程 MSMQ 似乎正在打开/关闭。我不知道出了什么问题,还有什么可以确认发送的。
我不愿意设置某种 ack。这似乎是一种矫枉过正。
using (var queue = new MessageQueue(queueName, QueueAccessMode.Send))
{
var messageQueueTransaction = new MessageQueueTransaction();
messageQueueTransaction.Begin();
try
{
queue.Formatter = new XmlMessageFormatter(new Type[] { typeof(EmailMessage) });
var msg = new Message();
msg.Label = emailMessage.Subject;
msg.Body = emailMessage;
queue.Send(msg, messageQueueTransaction);
messageQueueTransaction.Commit();
}
catch (Exception e)
{
LoggerLib.Logger.ErrorException(e, "Error Sending Email using MSMQ", emailMessage);
messageQueueTransaction.Abort();
}
finally
{
queue.Close();
}
}
MSMQ 的连接字符串格式为:"FormatName:DIRECT=OS:FULLMACINENAME\private$\emailmessagequeue"
另外,我使用了“FormatName:DIRECT:TCP:IPAddress\private$\emailmessagequeue”。
当我在本地运行它时,它可以正常工作。所以,我允许每个人都拥有完全访问权限,但它仍然不起作用。
有任何想法吗?