2013-05-23 1 views
1

Я пытаюсь запустить пример кода из проекта MassTransit:Masstransit: Не удается запустить код из в Visual Studio (QueueNotFound)

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?

EDIT

Я установил RabbitMQ и обновил код:

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

и она работает.
Вопрос остается: что случилось с msmq? Я бы предпочел продолжать использовать это.

+0

Я бы предложил использовать RabbitMQ поверх MSMQ независимо от того, что это намного мощнее. Вероятно, проблема связана с разрешениями - это исключение, которое возвращают библиотеки MSMQ. Вы используете Visual Studio в качестве администратора? Какую версию MT (последняя от NuGet?) И ОС вы используете? Я также присоединился бы к списку рассылки, чтобы получить более быстрые ответы, чем здесь: https://groups.google.com/forum/?fromgroups#!forum/masstransit-discuss – Travis

+0

Вы нашли решение этой проблемы? –

+0

Nope. Вместо этого используйте RabbitMQ. Он имеет несколько преимуществ по сравнению с MSMQ, а также практически: установка и распространение RabbitMQ намного проще, чем MSMQ. – RoelF

ответ

1

Доступ к MSMQ и работа с ним зависит от разрешения Windows (и UAC). Если вы не используете VS с повышенными привилегиями, у вас могут не быть прав. Я не уверен в специфике, но попробую предоставить права вашей учетной записи для создания и изменения очередей.

+1

Вы могли бы более подробно объяснить, как предоставить права на свою учетную запись? –