2012-02-01 8 views
13

biegnę NServiceBus 3.0.0 RC2, ale kiedy uruchomić aplikację (jako lokalny administrator) bez wstępnego tworzenia błędów w Msmq jest to z:Nie automatycznego tworzenia kolejki NServiceBus

Kolejka nie istnieje lub nie masz wystarczających uprawnień do wykonania operacji.

Nie działo się to przy użyciu NServiceBus 2.6.

Poniżej jest mój config:

var bus = Configure.With() 
    .Log4Net() 
    .NinjectBuilder() 
    .XmlSerializer() 
    .DefiningCommandsAs(t => typeof(ICommand).IsAssignableFrom(t)) 
    .DefiningEventsAs(t => typeof(IEvent).IsAssignableFrom(t)) 
    .DefiningMessagesAs(t => typeof(IMessage).IsAssignableFrom(t)) 
    .MsmqTransport() 
     .DefineEndpointName("subscriber.input") 
     .IsTransactional(true) 
     .PurgeOnStartup(false) 
    .UnicastBus() 
     .LoadMessageHandlers() 
     .ImpersonateSender(false) 
    .CreateBus() 
    .Start(); 

i

<configuration> 
    <configSections> 
    <section name="MsmqTransportConfig" type="NServiceBus.Config.MsmqTransportConfig, NServiceBus.Core" /> 
    <section name="UnicastBusConfig" type="NServiceBus.Config.UnicastBusConfig, NServiceBus.Core" /> 
    </configSections>  
    <MsmqTransportConfig ErrorQueue="error" NumberOfWorkerThreads="1" MaxRetries="5" />  
    <UnicastBusConfig> 
    <MessageEndpointMappings> 
     <add Messages="MyEvents" Endpoint="publisher.input" /> 
    </MessageEndpointMappings> 
    </UnicastBusConfig> 
    <startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> 
    </startup> 
</configuration> 

widzę config metodę rozszerzenia, aby wyłączyć automatyczne tworzenie kolejek, ale nikt za umożliwienie tego.

Jeśli wstępnie utworzę kolejki, działa dobrze.

+0

Cierpienie z tego samego wydania to AM ... –

Odpowiedz

15

Instalatorzy nie są uruchamiani automatycznie podczas samodzielnego hostowania. Zapoznaj się z global.asax.cs in the asyncpages sample, aby dowiedzieć się, jak to zrobić ręcznie.

using NServiceBus 
using NServiceBus.Installation.Environments 
... 
Bus = Configure.With() 
    .Log4Net() 
    .DefaultBuilder() 
    .XmlSerializer() 
    .MsmqTransport() 
    .IsTransactional(false) 
    .PurgeOnStartup(false) 
    .UnicastBus() 
    .ImpersonateSender(false) 
    .CreateBus() 
    .Start(() => Configure.Instance.ForInstallationOn<Windows>().Install()); 
+0

To zadziałało, dziękuję –

+0

Zauważyłem, że to nie tworzy kolejki TimeOut. Czy stworzy go, kiedy będzie go potrzebować? – Vaccano

+0

Tak, jeśli timeoutmanager jest w kolejce zostanie utworzony –

11

Obejść to, ręcznie tworząc kolejkę po stronie klienta (która jest hostowana samodzielnie).

Nie jestem pewien, ale pomyślałem, że 2.x zrobił to automatycznie. Host automatycznie tworzy kolejki, zgodnie z oczekiwaniami, ale nie ma klienta (hostowane samodzielnie).

AKTUALIZACJA: Tak jak Andreas, senor guardo camino, oświadczył, że musisz wywołać instalację ręcznie, tak jak;

.Start(() => Configure.Instance.ForInstallationOn<NServiceBus.Installation.Environments.Windows>().Install()); 

Spowoduje to utworzenie kolejek zgodnie z oczekiwaniami.

+0

Świetna odpowiedź. Dziękuję bardzo! – Sergey

+0

Czy nadal tak jest z wersją 5.2.6 i hostem NServiceBus 6.0.0? Otrzymuję: ERROR NServiceBus.Transports.Msmq.MsmqQueueCreator Nie można utworzyć błędu kolejki @ ... – pashute

Powiązane problemy