2012-02-01 10 views
13

私はNServiceBus 3.0.0 RC2を実行していますが、私はとMSMQのITエラーを事前に作成しなくても(ローカル管理者として)アプリケーションを起動したときに自動的にキューを作成しない: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

この問題の影響を受けています... –

答えて

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