2.6 から 3.2.7 にアップグレードした後に開始できない NServicebus プロジェクトがあります。エンドポイントは次のようになります。
namespace Customer.Project.SchemaImportService
{
public class SchemaImportEndpoint : IConfigureThisEndpoint, AsA_Server, IWantCustomInitialization
{
private IContainer _container;
public void Init()
{
log4net.Config.XmlConfigurator.Configure();
SetupStructureMap();
Configure.With()
.Log4Net()
.StructureMapBuilder(_container)
.DisableTimeoutManager()
.XmlSerializer()
.CreateBus();
}
private void SetupStructureMap()
{
// implementation omitted
}
}
さらに、app.config は次のようになります。
<configuration>
<configSections>
<section name="MsmqTransportConfig" type="NServiceBus.Config.MsmqTransportConfig, NServiceBus.Core" />
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" requirePermission="false" />
<section name="MessageForwardingInCaseOfFaultConfig" type="NServiceBus.Config.MessageForwardingInCaseOfFaultConfig, NServiceBus.Core" />
<section name="Logging" type="NServiceBus.Config.Logging, NServiceBus.Core" />
</configSections>
<MsmqTransportConfig NumberOfWorkerThreads="1" MaxRetries="5" />
<Logging Threshold="DEBUG" />
<log4net debug="true"> <!-- logging details omitted --> </log4net>
<MessageForwardingInCaseOfFaultConfig ErrorQueue="Customer.Project.SchemaImportService.Error" />
プロジェクトをデバッグするときに NServicebus.Host.exe ファイルを起動し、プロファイル (Production、Integration、Lite) を切り替えてみましたが、同じ結果になりました。
(initステートメントを離れた後に)与えられる例外は次のようになります。
Message: "Exception when starting endpoint, error has been logged. Reason: Object reference not set to an instance of an object."
Source: NserviceBus.Host
StackTrace: at NServiceBus.Hosting.GenericHost.Start() in c:\TeamCity\buildAgent\work\nsb.master_7\src\hosting\NServiceBus.Hosting\GenericHost.cs:line 45
at NServiceBus.Hosting.Windows.WindowsHost.Start() in c:\TeamCity\buildAgent\work\nsb.master_7\src\hosting\NServiceBus.Hosting.Windows\WindowsHost.cs:line 56
at NServiceBus.Hosting.Windows.Program.<>c__DisplayClass8.<Main>b__4(WindowsHost service) in c:\TeamCity\buildAgent\work\nsb.master_7\src\hosting\NServiceBus.Hosting.Windows\Program.cs:line 97
at Topshelf.Internal.ControllerDelegates`1.StartActionObject(Object obj) in c:\Projects\TopShelfForNSB\src\Topshelf\Internal\ControllerDelegates.cs:line 18
at Topshelf.Internal.IsolatedServiceControllerWrapper`1.<>c__DisplayClass2. <set_StartAction>b__1(TService service) in c:\Projects\TopShelfForNSB\src\Topshelf\Internal\IsolatedServiceControllerWrapper.cs:line 65
at Topshelf.Internal.ServiceController`1.<.cctor>b__1(ServiceController`1 sc) in c:\Projects\TopShelfForNSB\src\Topshelf\Internal\ServiceController.cs:line 35
at Magnum.StateMachine.LambdaAction`1.Execute(T instance, Event event, Object parameter) in :line 0
at Magnum.StateMachine.EventActionList`1.Execute(T stateMachine, Event event, Object parameter) in :line 0
次の行がログ ファイルに記録されます。
INFO 2012-08-21 13:25:24,881 18494ms RoleManager gureBusForEndpoint - Role NServiceBus.AsA_Server configured
DEBUG 2012-08-21 13:25:25,124 18738ms TransactionalTransport DebugFormat - Setting throttling to: [1] message/s per second, sleep between receiving message: [800]
FATAL 2012-08-21 13:25:25,158 18772ms GenericHost Start - System.NullReferenceException: Object reference not set to an instance of an object.
at NServiceBus.Unicast.Transport.Transactional.TransactionalTransport.NServiceBus.Unicast.Transport.ITransport.Start(Address address)
at NServiceBus.Unicast.UnicastBus.NServiceBus.IStartableBus.Start(Action startupAction)
at NServiceBus.Unicast.UnicastBus.NServiceBus.IStartableBus.Start()
at NServiceBus.Hosting.GenericHost.Start() in c:\TeamCity\buildAgent\work\nsb.master_7\src\hosting\NServiceBus.Hosting\GenericHost.cs:line 32
私が提供できる最後の情報 (しかしおそらく最も重要な情報) は、すべてのメッセージキューを削除すると、メインキューが自動的に再作成されないということです。
これらのプライベート キューが作成されます。
customer.project.schemaimportservice.error
customer.project.schemaimportservice.retries
しかし
customer.project.schemaimportservice
名前空間と一致していても、キューがありません (投稿の上部を参照)。
私は何を間違っていますか?バージョン 3.2.7 ではメッセージキュー名を手動で構成する必要がありますか?