起動時にモジュールを登録するのに時間がかかる NServiceBus Windows サービスがあります。Service Manager が正常に起動するまでの時間を延長してください。NServiceBus を使用しないサービスの場合、これはServiceBase.RequestAdditionalTime
. NServiceBus.Host を使用してこれを行うにはどうすればよいでしょうか?
2 に答える
1
最終的にNServiceBus.Hostを削除し、代わりにTopshelfを使用しました。サービスの起動時に必要な追加の構成に注意してください。
public static void Main(string[] args)
{
HostFactory.Run(hf =>
{
hf.Service<MailboxListenerService>(svc =>
{
svc.ConstructUsing(mls => new MailboxListenerService());
svc.WhenStarted((mls, control) => mls.Start(control));
svc.WhenStopped(mls => mls.Stop());
});
});
}
public class MailboxListenerService
{
private RunWebApi _webApiRunner;
public MailboxListenerService()
{
}
public bool Start(HostControl hostControl)
{
hostControl.RequestAdditionalTime(TimeSpan.FromSeconds(60));
var kernel = new StandardKernel(new MailboxListenerModule());
Configure.With()
.DefineEndpointName("my.endpoint.name")
.DefiningEventsAs(t => typeof(Messaging.Markers.IEvent).IsAssignableFrom(t))
.Log4Net<NlogAppenderForLog4Net>(a => { })
.NinjectBuilder(kernel)
.MsmqTransport()
.MsmqSubscriptionStorage("my.subscription.storage")
.DisableTimeoutManager()
.DisableSecondLevelRetries()
.UnicastBus()
.ImpersonateSender(false);
_webApiRunner = kernel.Get<RunWebApi>();
_webApiRunner.Run();
return true;
}
public void Stop()
{
_webApiRunner.Stop();
}
}
于 2013-03-11T21:47:50.763 に答える
0
残念ながら、いいえ。将来のバージョンでこれをサポートするために問題を解決しました。
https://github.com/NServiceBus/NServiceBus/issues/1046
回避策は、レジストリを使用してサービスのタイムアウトを増やすことです。
于 2013-03-11T18:37:48.557 に答える