Windows クラスターで Windows サービスとして実行されている TCP サーバーがあります。メッセージを受信し、キュー (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 上にあるとのことです。