我有一个TCP服务器,作为Windows群集中的Windows服务运行。它接收消息并将它们放入队列(MSMQ)。我制作了一个公开的MSMQ队列。而我得到这个错误信息:消息队列服务不可用
System.Messaging.MessageQueueException (0x80004005): Message Queue service is not available.
at System.Messaging.MessageQueue.MQCacheableInfo.get_WriteHandle()
at System.Messaging.MessageQueue.StaleSafeSendMessage(MQPROPS properties, IntPtr transaction)
at System.Messaging.MessageQueue.SendInternal(Object obj, MessageQueueTransaction internalTransaction, MessageQueueTransactionType transactionType)
我将消息发送到队列是这样的:
static void SendHelper(UncookedMessage uncooked)
{
var msg = new Message(uncooked);
msg.Formatter = new XmlMessageFormatter(new[] { typeof(UncookedMessage) });
// (PER MESSAGE)
msg.UseJournalQueue = false;
msg.AttachSenderId = false;
msg.Recoverable = true;
SingleQueue.Send(msg);
}
队列的安全性给出了完全访问的服务器和群集定义的每个用户。我的队列名称是:FormatName:DIRECT = OS:application9 \ uncooked_message_single;但我已经测试application9 \ uncooked_message_single,application9.domain.com \ uncooked_message_single和FORMATNAME:DIRECT = OS:application9.domain.com \ uncooked_message_single。没有人工作。
说明:此应用程序与非群集服务器上的专用队列完美配合。我不太了解Windows群集,但我们的管理员说这是一个故障转移群集,它在Windows Server 2012上。