2012-02-01 4 views
13

내가 NServiceBus 3.0.0 RC2를 실행하는거야하지만 난으로 MSMQ의 그 오류를 미리 만들지 않고 (로컬 관리자로) 응용 프로그램을 시작할 때 자동으로 큐를 생성하지 않음 :NServiceBus

큐가 존재하지 않습니다 또는 작업을 수행 할 수있는 충분한 권한이 없습니다.

NServiceBus 2.6을 사용하면 이런 일이 발생하지 않았습니다.

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(); 

<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> 

내가 그것을 가능하게하는 자동 큐의 생성하지만 없음을 해제하는 설정 확장 방법을 볼 수

다음은 내 설정이다.

대기열을 사전 작성하면 올바르게 작동합니다.

+0

동일한 문제가 발생했습니다. AM ... –

답변

15

자가 호스트를 사용하면 설치 프로그램이 자동으로 실행되지 않습니다. 수동으로 수행하는 방법에 대한 예는 global.asax.cs in the asyncpages sample을 참조하십시오.

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

감사합니다. –

+0

감사합니다. TimeOut 대기열이 생성되지 않는 것으로 나타났습니다. 그것을 필요로 할 때 만들 것인가? – Vaccano

+0

예, timeoutmanager가 켜져 있으면 대기열이 생성됩니다 –

11

클라이언트 측에서 수동으로 대기열을 생성하여이 문제를 해결했습니다 (자체 호스팅 됨).

잘 모르겠지만 2.x가 자동으로이 작업을 수행했다고 생각했습니다. 호스트가 예상대로 자동으로 대기열을 작성하지만 클라이언트는 자동으로 작성하지 않습니다.

업데이트 : Andreas, senor guardo camino와 마찬가지로 명시 적으로 수동으로 설치를 호출해야합니다. 예상대로

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

이 대기열을 생성합니다.

+0

좋은 답변입니다. 정말 고맙습니다! – Sergey

+0

버전 5.2.6 및 NServiceBus 호스트 6.0.0에서도 여전히 그렇습니까? 오류 : NServiceBus.Transports.Msmq.MsmqQueueCreator 대기열 오류를 작성할 수 없습니다 @ ... – pashute