【发布时间】: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