シンプルな MQ 読み取りサービスを作成するために Topshelf を使用しています。利用可能なドキュメントがまばらであるため、ここで回答を得たいと考えているいくつかのおそらく単純な質問に出くわしました。
1) 一般に、アクセスしたいメソッドがたくさんあるので、サービス インスタンスの実際のサービスベース インスタンスを取得すると非常に便利です。どうやってやるの?
2) OnStop が呼び出されたら、MQ をフラッシュして、残りのメッセージをすばやく処理したいと考えています。ただし、OnClose で MQ にアクセスすると、MQ アクセス例外が発生します。これは設計によるものですか?
3) コンフィギュレーターで OnPause と OnContinue のオーバーロードを指定しました。ただし、AllowPauseAndContinue フラグが設定されていないため、サービスは一時停止/継続が有効になっていません。それを行う最善の方法は何ですか?
var retVal = HostFactory.New( x =>
{
x.Service<ASForwardMessageService>( s =>
{
s.SetServiceName( s_ServiceName );
s.ConstructUsing( name => CreateService() );
s.WhenStarted( tc => tc.OnStart() );
s.WhenStopped( tc => tc.OnStop() );
s.WhenPaused( tc => tc.OnPause() );
s.WhenContinued( tc => tc.OnContinue() );
} );
x.RunAsLocalSystem();
x.DependsOnMsmq();
x.StartAutomatically();
x.SetDescription( s_Description );
x.SetDisplayName( s_DisplayName );
x.SetServiceName( s_ServiceName );
} );
ところで、Topshelf プロジェクトで利用できるドキュメントはありますか?
素晴らしいライブラリをありがとう!