2

MassTransit プロジェクトからいくつかのサンプル コードを実行しようとしています。

var bus = ServiceBusFactory.New(sbc =>
{
    sbc.UseMsmq().Validate();
    sbc.ReceiveFrom("msmq://localhost/app1_queue");
    sbc.UseMulticastSubscriptionClient();

     sbc.Subscribe(s=>
     {
        s.Handler<CustomMessage>(msg => { Console.WriteLine(msg.Body); });
     });
});

Visual Studio を使用するとF5、次の例外が発生します。

MessageQueueException: The queue does not exist or you do not have
sufficient permissions to perform the operation.
MessageQueueErrorCode: System.Messaging.MessageQueueErrorCode.QueueNotFound

Management Console で MessageQueues を確認したところ、実際にキューが存在しないことがわかりました。ただし、TestApp1.exe を実行すると、すべて正常に動作し、キューが作成されます。Visual Studio に戻ると、同じエラーが引き続き発生します (ただし、キューが使用できるようになりました)。

キューのセキュリティを設定してみました (Everyone フル アクセス) が、変更されません。

私は何を間違っていますか?これを Visual Studio 内から実行できないのはなぜですか?

編集

RabbitMQコードをインストールして更新しました:

sbc.UseRabbitMq();
sbc.ReceiveFrom("rabbitmq://localhost/app1_queue");

そしてそれは動作します。
疑問が残ります: msmq の何が問題なのですか? 私はそれを使い続けたいと思います。

4

1 に答える 1

1

MSMQ へのアクセスと操作は、Windows 認証 (および UAC) の対象となります。昇格された権限で VS を実行しない限り、権限がない可能性があります。詳細はわかりませんが、アカウントにキューを作成および変更する権限を付与してみてください。

于 2013-07-03T12:30:47.570 に答える