【问题标题】:Masstransit: Can not run code from within Visual Studio (QueueNotFound)Masstransit:无法从 Visual Studio (QueueNotFound) 中运行代码
【发布时间】:2013-05-18 12:57:28
【问题描述】:

我正在尝试运行 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

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

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

我做错了什么?为什么我不能在 Visual Studio 中运行它?

编辑

我已经安装了RabbitMQ 并更新了代码:

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

它有效。
问题仍然存在:msmq 有什么问题?我宁愿继续使用它。

【问题讨论】:

  • 无论如何,我建议使用 RabbitMQ 而不是 MSMQ,它要强大得多。问题可能是权限 - 这是 MSMQ 库返回的异常。您是否以管理员身份运行 Visual Studio?您正在运行什么版本的 MT(来自 NuGet 的最新版本?)和操作系统?我也会加入邮件列表以获得比这里更快的回复:groups.google.com/forum/?fromgroups#!forum/masstransit-discuss
  • 你找到解决这个问题的方法了吗?
  • 不。改用 RabbitMQ。它比 MSMQ 有一些优点,实际上也是:RabbitMQ 的安装和分发比 MSMQ 容易得多。

标签: c# visual-studio-2012 msmq masstransit


【解决方案1】:

访问和操作 MSMQ 需要 Windows 授权(和 UAC)。除非您以提升的权限运行 VS,否则您可能没有权限。我不确定具体情况,但请尝试授予您的帐户创建和修改队列的权限。

【讨论】:

  • 您能否更详细地解释一下如何授予您的帐户权限?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-22
  • 1970-01-01
  • 1970-01-01
  • 2016-07-29
  • 2020-01-21
  • 2021-04-03
  • 1970-01-01
相关资源
最近更新 更多