2013-10-22 63 views
1

我已經配置NServiceBus使用Sql Server。NServiceBus與Sql Server傳輸錯誤

Configure.With() 
     .AutofacBuilder(container) 
     .UseTransport<SqlServer>("aureus") 
     .InMemorySubscriptionStorage() 
     .UnicastBus() 
     .DisableTimeoutManager() 
     .CreateBus() 
     .Start(); 

當我在控制器中發送消息。

this._bus.Send(new BillClient { Value = "testing." }); 

我得到了錯誤。 無法將消息發送到地址:[queue] 無效的對象名稱'隊列'。

我的配置如下:

<UnicastBusConfig> 
    <MessageEndpointMappings> 
     <add Assembly="Aureus.Messages" Namespace="Aureus.Messages" Endpoint="queue"/> 
    </MessageEndpointMappings> 
    </UnicastBusConfig> 

有什麼我錯過了?我無法確定是否需要運行腳本/或初始化隊列?

回答

1

而不是

.Start() 

你需要

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

揭開序幕隊列的初始化。

1

我不是專家,但我不得不使用ConnectionString定義作爲.UseTransport()的參數,如下所示。在你的文章中,還不清楚什麼「金黃色葡萄球菌」對NServiceBus軟件意味着什麼。

.UseTransport<SqlServer>(ConnectionString()) 


string ConnectionString() 
{ 
    return "NServiceBus/Transport\" connectionString=\"Data Source=.\\SQLEXPRESS;Initial Catalog=nservicebus;Integrated Security=True"; 
} 

我無法將我的配置文件中的ConnectionString名稱用作參數。下面是我的配置文件的部分供參考:

<connectionStrings> 
    <!-- Message Bus ********************************************** --> 
<add name="NServiceBus/Transport" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=nservicebus;Integrated Security=True" /> 
    <!-- Message Bus ********************************************** --> 
</connectionStrings> 

此外,對於端點在我的配置文件,我不得不用我的NServiceBus消息處理程序類的命名空間。這裏是我的配置文件的端點部分:

<UnicastBusConfig ForwardReceivedMessagesTo="audit"> 
    <MessageEndpointMappings> 
    <!--Note - Endpoint must specify the Namespace of the server--> 
    <add Assembly="My.Messages.Assemblyname" Namespace="My.Messages.AssemblyNamespace" Endpoint="MyMessageHandlerAssy.Namespace" /> 
    </MessageEndpointMappings> 
</UnicastBusConfig> 

希望能幫助你一點。