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); });
     });
});

当我现在只是F5在 Visual Studio 中时,我得到以下异常:

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

我在管理控制台中检查了 MessageQueues,确实看到队列不存在。但是,如果我运行 TestApp1.exe,一切正常并创建队列。回到 Visual Studio,仍然是同样的错误(但队列现在可用。)

我试过设置队列的安全性(每个人都可以完全访问),但它没有改变。

我究竟做错了什么?为什么我不能从 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 回答