1

シンプルな 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 プロジェクトで利用できるドキュメントはありますか?

素晴らしいライブラリをありがとう!

4

1 に答える 1

1

ドキュメントについてはhttps://github.com/Topshelf/Topshelf/wiki、http://topshelf-project.com/もありますが、ドキュメントに関してはあまりありません。これは、私たちのメーリングリストにとってもより良い議論になるかもしれません。

  1. インストール前とインストール後の新しいイベント(http://legomaster.net/2011/02/announcing-topshelf-2-2/)を介して可能であると思いますが、これは公開していません。一般的な考え方は、設定する必要があるものはすべて、構成APIを介して公開されるというものです。今は持っていないと感じている注目アイテムを教えてください。

  2. どのような例外が発生していますか?Topshelfの設計には、この問題の原因となるはずのことは何もありません。

  3. CanPauseAndContinue設定されていません。githubのIssueTrackerに問題をドロップすると、解決できると思います。

于 2011-04-30T12:02:23.647 に答える