私は、プロデューサとコンシューマの両方が同じマシンに にいるときに非常にうまく動作するMSMQを使用するアプリケーションを持っています。メッセージキューからメッセージを送信した場所はどこですか?
昨日、初めて別のマシンで実行する別のプロデューサを作成しようとしました。 キューが専用キューで、両側が
string strQueueName = ".\Private$\MyQueue";
としてそれを参照し、前に私は、リモートマシンからこのキューを参照するには、いくつかの方法を試してみました。私のサーバー名はので、私は
string strQueueName = "groucho\Private$\MyQueue";
を試してみました「グルーチョ」、 ですが、これは一貫して「無効なキューのパス名」の例外を投げました。
仲間の開発者は、例外を回避する、私は次のことを試してください示唆していない:
string strQueueName = "FORMATNAME:DIRECT =OS:grouch\\private$\\SDVQueue";
私は メッセージが表示されないよう、どちらか、これはもはや例外をスローし、動作するようには思えません待ち行列内にある。
サーバーはWindows Server 2008 R2です。 "Everyone"はReceiveとPeekはできますがSendはできませんが、 "Send"を追加しようとすると、 に「セキュリティ記述子を設定できません」というエラーダイアログが表示されます、エラー:アクセスが拒否されました "。 I doこのボックスには管理者権限があります。
セキュリティにはあらゆる種類のセキュリティがありますが、送信者またはホストマシンのいずれのイベントログにもエラーは表示されません。
セキュリティ上の問題が発生した場合は、どのように問題を確認できますか?
ありがとうございます!ここで
は、完全なテストコードです:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Messaging;
namespace RemoteQueue
{
class Program
{
static void Main(string[] args)
{
string name = "FORMATNAME:DIRECT =OS:groucho\\private$\\SDVQueue";;
string input = null;
MessageQueue queue = null;
try
{
queue = new MessageQueue(name);
string key = "key";
for (int i = 0; i < 200; i++)
{
Message msgToSend = new Message();
string value = "value_" + i;
msgToSend.Body = string.Format("{0},{1}", key, value);
Console.WriteLine("Sending message " + i);
queue.Send(msgToSend, "otherpart");
}
}
catch (MessageQueueException me)
{
Console.WriteLine("ERROR: caught message queue exception: " + me.Message);
}
Console.WriteLine("Type any key to exit...");
input = Console.ReadLine();
}
}
}
デッドレターキューにメッセージがありますか? –
私はちょうどチェックし、デッド・レター・キューには何もありません。 –