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