我有一個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上。
謝謝;問題是從集羣應用程序使用MSMQ,MSMQ服務也應該集羣化,並且也需要共享存儲,並且需要NAS。所以現在我們刪除了聚集的東西,我們使用一個手工機制來決定哪個服務器應該承擔責任。 – 2013-03-08 09:25:17
@KavehShahbazian,我很高興你終於完成了。 :-) – 2013-03-08 09:47:47